0
で静的ライブラリを使用したとprobem:私はA 2つのC++のプロジェクトを持っているとBプロジェクトBが プロジェクトAは、この構造は、いくつかのサブディレクトリに分かれており、プロジェクトAに依存してcmakeプロジェクト
Project A
|-\inc
| |-a1.h
| |-a2.h
|-\src
|-CMakeLists.txt
|-\subdir_A1
| |-CMakeLists.txt
| |-a1.cpp
|
|-\subdir_A2
|-CMakeLists.txt
|-a2.cpp
Project B
|-\lib
|-a1.h
|-a2.h
|-lib_ProjectA.a
|-\src
|-CMakeLists.txt
|-b.cpp
問題があることですプロジェクトBはプロジェクトのA定義を解決できません。 `project_a :: A1 ::関数func1()」
UPD1へ
未定義の参照:私はプロジェクトBにCMakeLists.txtに
target_link_libraries
を追加しましたが、私はこのようなエラーが発生していますサブディレクトリ(liba1.a、liba2.a)からすべてのライブラリをコッピングしてプロジェクトにリンクすることで、プロジェクトBをコンパイルすることができました。プロジェクトAを調整して1つしかできないのだろうかファイルlib_ProjectA.a
UPD2
コード:
プロジェクトA
add_library (adapter adapter.cpp ) target_link_libraries (adapter PUBLIC net # From project's A subdirectory utils # From project's A subdirectory )
プロジェクトB
add_library (anthill functional_block.cpp) target_link_libraries(anthill ${PROJECT_SOURCE_DIR}/lib/libjsoncpp.a ${PROJECT_SOURCE_DIR}/lib/libadapter.a ${PROJECT_SOURCE_DIR}/lib/libnet.a # Can't compile without it ${PROJECT_SOURCE_DIR}/lib/libutils.a # Can't compile without it )
おそらく、プロジェクト 'B'の' CMakeLists.txt'に 'link_directories($ {CMAKE_SOURCE_DIR}/lib)'を設定すれば十分です。それについてはわからない、試してみて、それが解決すれば回答として追加する。 – skypjack
CMakeファイルの関連部分を教えてください。 – MikeMB
@MikeMB実際、プロジェクトははるかに大きく、他の名前のサブディレクトリがたくさんあります。私はもっと混乱させてしまいます。今問題はliba1.aとliba2.aをコッピングせずにプロジェクトBをコンパイルすることです。出来ますか? – flipback