【发布时间】:2015-11-19 19:40:38
【问题描述】:
我有一组库和可执行文件,它们都有自己的 CMakeLists.txt。所有库都将它们的目标构建到相同的路径(例如../build/bin 和../build/lib)...以及导出它们的头文件(../build/inc)。
现在我希望构建一个构建系统并让 CMake 找出依赖关系(使用 add_subdirectory 和全局构建设置)。
问题是:所有库在构建后都会将其标头导出到build/inc(在调用make install 时)。当我进行整个系统构建时,make install 直到结束后才被调用(并且一切都已构建)。因此,例如带有target_link_libraries( progfoo onelib ) 的可执行文件progfoo 将失败,因为CMake 计算出与onelib 的依赖关系(构建良好),但progfoo 失败,因为它在build/inc 中查找标题...还出口。同样的事情通常适用于许多图书馆。
处理这些情况的正确 CMake-Way 是什么?谢谢!
【问题讨论】:
-
你应该告诉子项目其他组件的包含在哪里,所以在源目录中。 CMake 必须知道所有库,才能找出构建它们的正确顺序。我不确定是否适合您的布局。
-
由于@usr1234567 已经很难过,您应该包含原始位置的标题(请参阅我的答案)。如果以后您仍然需要将所有文件放在一个地方,您可以将它们收集起来,这就是 CMake 应该使用的方式。如果你不反对它,它是一个非常有用的工具
标签: cmake