如何将无值的参数传递给CMake?

时间:2019-07-19 14:49:01

标签: cmake

在CMake中,我可以将没有值的变量作为参数传递,并检查是否提供了该变量吗?

cmake -DPAR1=123 -DPAR2

# CMakeLists.txt
if (PAR2)
    message("PAR2 detected")
else()
    message("PAR2 not detected")
endif()

使用此代码,我得到错误:

Parse error in command line argument: -DPAR2
Should be: VAR:type=value
CMake Error: No cmake script provided.
CMake Error: Problem processing arguments. Aborting.

2 个答案:

答案 0 :(得分:1)

请注意,即使您设法以某种方式不传递任何内容(例如,传递一个空字符串),它也不会做您想要的事情,因为if(PAR2)会得出错误的值。

如果要使用if(PAR2)这样的条件,则必须给PAR2一个真实的值,例如1YON,或TRUE

cmake -DPAR1=123 -DPAR2=ON

答案 1 :(得分:1)

-D CMake命令行参数的格式必须为var=value。但是,一种模拟布尔值或#ifdef的方法是为true情况传递一个有效值(可以是您想要的任何值):

cmake -DPAR1=123 -DPAR2=True

并在false情况下完全省略变量:

cmake -DPAR1=123

最后,在您的CMakeLists.txt文件中,将if语句更改为使用DEFINED来检查PAR2变量是否存在:

if (DEFINED PAR2)
    message("PAR2 detected")
else()
    message("PAR2 not detected")
endif()