假设在 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 的最后一行:我需要明确指定 A 作为 main 的依赖项。基本上,我需要为包含 bh 的每个源指定此类依赖项,因为包含可以是间接的,并且一直向下通过包含链。比如a.cpp调用ch的类内联函数,依次调用dh等函数,最后调用A库中的函数。如果bh包含在lots文件中,手动查找所有依赖是不可行的大型项目。
所以我的问题是,是否有任何规定,对于每个直接或间接包含头文件的源文件,它需要链接到某个库?
谢谢。