我无法cmake测试是否已定义预处理器.例如:
cmake_minimum_required(VERSION 2.8.9)
project (cmake-test)
add_definitions(-DOS=LINUX)
if(NOT <what condition goes here?>)
message(FATAL_ERROR "OS is not defined")
endif()
Run Code Online (Sandbox Code Playgroud)
以下测试不起作用:
if (NOT COMMAND OS)
if (NOT DEFINED OS)
if (NOT OS)
Run Code Online (Sandbox Code Playgroud)
我可以通过使用set()并测试常规cmake变量然后定义预处理器宏来使其工作.例如:
set(OS LINUX)
if (OS)
add_definitions(-DOS=${OS})
else()
message(FATAL_ERROR "OS is not defined")
endif()
Run Code Online (Sandbox Code Playgroud)
在这种情况下,你想知道为什么我需要测试它,如果变量/预处理器在同一个文件中,那是因为在最终实现中这些将来include自主CMakeFile.txt中的外部文件例如:
include(project_defs.txt)
if (OS)
....
Run Code Online (Sandbox Code Playgroud)