我正在尝试使用cmake构建一个多项目项目,并使用了ExternalProject_Add()
命令。但是,我无法使用CMAKE_CXX_COMPILER
选项,这会导致以下问题:在配置期间,外部项目会检查多个编译器功能,设置(或不设置,在这种情况下)必要的标志.h文件。当我运行make时,使用不同的编译器,并且.h文件中的值不正确。
我已将其归结为以下代码行,这些代码行出现在我的CMakeLists.txt
文件的顶部,用于外部项目(CGAL):
message("**** CXX Compiler is ${CMAKE_CXX_COMPILER}")
project(CGAL CXX C)
message("**** CXX Compiler is ${CMAKE_CXX_COMPILER}")
当我运行它时,第一条消息显示正确的值(通过XCode安装的Frameworks编译器)。但是,第二条消息显示错误的编译器(我使用MacPorts安装的GNU版本)。我查阅了project规范,但它们非常稀疏。他们确实注意到,如果不包含project()
命令,将使用CXX
和C
语言添加隐式命令。果然,当我删除project()
命令时,两条消息都报告错误的编译器。
我对project()
命令有什么不了解的吗?它是否在文件路径中的某处搜索CMakeLists.txt
文件并默认加载它?有没有办法可以重载此设置(没有创建临时变量来保存旧值)?
FWIW,setting CMAKE_CACHE_ARGS
不起作用。