是否可以像在C ++中一样使用CMake INCLUDE
命令。
在我的所有项目中,我必须做同样的事情包括:
示例:" MyApplication"
的CMakeLists.txtINCLUDE("FindMyBase")
INCLUDE("FindMyGtk")
在此示例中, FindMyGtk 已经有" FindMyBase"在里面。 那么为什么我需要在 MyApplication 中包含 FindMyBase ? 有一个方法,一旦包含一个.cmake文件,它仍然可用于下面链中的所有其他项目吗?
更新1:我们的想法是避免每次搜索MyBase,如果已经找到一次。
更新2:目标也是减少包含数量。在我的例子中,从2到1,但如果你有10个包含,那么你可以将它们减少到只有2,如果这2个依赖于其他8个。
答案 0 :(得分:2)
它几乎可以做到这一点。我将include
可视化,就像您将包含文件的内容直接粘贴到您调用它的CMakeLists.txt文件中一样。
在您的情况下,“FindMyBase”被调用两次。这通常无关紧要 - 例如如果包含文件只定义函数或宏,则可以安全地包含多次。
如果包含的文件使用CMake的find_XXX
函数集合搜索组件,那么这些已经完成了您想要的操作。搜索结果被缓存。在后续调用中,如果此缓存结果显示已找到该组件,则不再进行进一步搜索。
如果你想(或者有)避免多次包含同一个文件,你可以用类似于C ++包含警卫的方式在文件顶部添加包含警戒:
if(FindMyBaseIncluded)
return()
endif()
set(FindMyBaseIncluded TRUE)
这样,多次包含文件几乎是免费的。