我在ExternalProject_Add
中使用CMakeLists.txt
命令添加一些外部项目。我想要检索一些项目属性(我希望从<project>_DEFINITIONS
获得Find<package>.cmake
之类的预处理器定义。)
有没有办法让所有允许的项目属性用作ExternalProject_Get_property
命令参数?例如,我知道 source_dir 和 binary_dir ,i。即像这样的东西:
ExternalProject_Get_property(<my project> binary_dir)
OR有没有办法在下载外部项目后立即使用find_package
函数?我确实知道这个项目的find_package
在启动构建之后工作(即在已经配置外部项目之后)。它会自动设置所有必要的变量(如<project>_DEFINITIONS
),但显然find_package(<project>)
最初不可用(即在配置外部项目之前)。
答案 0 :(得分:2)
下载外部包时,您只有其来源。 CMake没有通用的方法只使用其来源提取有关包的信息。
仅限来源:
函数ExternalProject_Get_property
返回ExternalProject_Add
调用本身 set 的属性。外部项目甚至没有在此次通话中配置,因此您无法获得有关该包的任何信息。
<强>配置强>:
有命令export,它允许配置的外部包发布有关其某些目标的信息。
<强>已安装强>:
命令find_package
要求(通常)已安装软件包。