仅包含单个目标的include_libraries

时间:2011-07-07 10:59:06

标签: cmake

在具有多个目标的项目中,我希望仅为特定目标添加包含库。我不想通过向所有项目添加许多包含库来减慢编译速度,我确实希望如果我没有指定所需的库作为可执行文件的依赖项,它将在编译时失败,而不仅仅是在链接中时间。

有没有办法在CMake中做到这一点?像target_link_libraries这样的东西,但仅限于包含目录?

1 个答案:

答案 0 :(得分:1)

首先,我不会为编译时间的增加而烦恼,因为你添加了许多包含目录。当然,你应该测试它是否真的是一个问题。

您可以尝试直接在源文件上指定COMPILE_FLAGS属性,但这可能不是跨平台的,需要在每个源文件上完成。

或者,考虑在子目录中拆分项目,并为每个子目录单独写一个CMakeLists.txt。在这种情况下,include_directories()调用仅限于当前项目(及其子项目)的范围,您可以对每个项目进行更细粒度的控制。

在编译时可能存在要求失败的问题:例如当使用静态库A时,取决于C:当某人将exe / dll链接到A时,需要libs B和C,但这不一定在编译时可检测到......并且难以一般地解决与CMake。