我有一个makefile用于我的项目,而且我正在传递一些参数,并且基于该参数我正在设置一些标志.我能做到这一点.但现在我想用cmake做同样的事情.我已创建cmakelist.txt但我不知道如何传递参数并检查参数值cmakelist.txt.
我的makefile示例:
ifeq "$(FAB)" "po"
//setting some flags
else
//setting some iother flag
endif
Run Code Online (Sandbox Code Playgroud)
从命令提示符获取参数并基于此设置标志的方法是什么?
Pet*_*ter 68
在CMakeLists.txt文件中,创建一个缓存变量,如下所示:
SET(FAB "po" CACHE STRING "Some user-specified option")
Run Code Online (Sandbox Code Playgroud)
来源:http://cmake.org/cmake/help/v2.8.8/cmake.html#command:set
然后,使用GUI(ccmake或cmake-gui)设置缓存变量,或者在cmake命令行上指定变量的值:
cmake -DFAB:STRING=po
Run Code Online (Sandbox Code Playgroud)
来源:http://cmake.org/cmake/help/v2.8.8/cmake.html#opt : -Dvar : typevalue
如果实际上您的选项是布尔值,则将缓存变量修改为布尔值.
PJ_*_*gan 11
在Ubuntu 16.04上的CMake 3.13
这种方法更加灵活,因为它不会将MY_VARIABLE约束为一种类型:
$ cat CMakeLists.txt
message("MY_VARIABLE=${MY_VARIABLE}")
if( MY_VARIABLE )
message("MY_VARIABLE evaluates to True")
endif()
$ mkdir build && cd build
$ cmake ..
MY_VARIABLE=
-- Configuring done
-- Generating done
-- Build files have been written to: /path/to/build
$ cmake .. -DMY_VARIABLE=True
MY_VARIABLE=True
MY_VARIABLE evaluates to True
-- Configuring done
-- Generating done
-- Build files have been written to: /path/to/build
$ cmake .. -DMY_VARIABLE=False
MY_VARIABLE=False
-- Configuring done
-- Generating done
-- Build files have been written to: /path/to/build
$ cmake .. -DMY_VARIABLE=1
MY_VARIABLE=1
MY_VARIABLE evaluates to True
-- Configuring done
-- Generating done
-- Build files have been written to: /path/to/build
$ cmake .. -DMY_VARIABLE=0
MY_VARIABLE=0
-- Configuring done
-- Generating done
-- Build files have been written to: /path/to/build
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
73250 次 |
| 最近记录: |