CMake プロジェクトで、ライブラリに組み込まれたソースがあるとします。
// a.cpp
void f() { /* some code*/ }
そして、私はヘッダーを持っています
// b.h
void f();
struct X { void g() { f(); } };
別のファイルがあります:
// main.cpp
#include "b.h"
int main() { X x; x.g(); }
CMakeLists.txt には以下が含まれます。
add_library(A a.cpp)
add_executable(main main.cpp)
target_link_libraries(main A)
ここで、CMakeLists.txt の最後の行を見てください。main の依存関係として A を明示的に指定する必要があります。基本的に、bh を含むすべてのソースに対してそのような依存関係を指定する必要があります。たとえば、a.cpp は ch のクラス インライン関数を呼び出し、次に dh の関数を呼び出し、最後にライブラリ A から関数を呼び出します。bh が多数のファイルに含まれている場合、そのようなすべての依存関係を手動で見つけることは現実的ではありません。大規模なプロジェクト。
だから私の質問は、ヘッダーを直接または間接的に含むすべてのソースファイルに対して、特定のライブラリにリンクする必要があることを指定する方法はありますか?
ありがとう。