小编Man*_*dhu的帖子

cmake:如何检查是否定义了预处理器

我无法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)

preprocessor cmake

6
推荐指数
1
解决办法
5728
查看次数

标签 统计

cmake ×1

preprocessor ×1