我無法獲得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()
下面的測試不起作用:
if (NOT COMMAND OS)
if (NOT DEFINED OS)
if (NOT OS)
我可以得到它通過使用set()
,只是測試了常規cmake
變量,然後定義預處理宏來工作。例如:
set(OS LINUX)
if (OS)
add_definitions(-DOS=${OS})
else()
message(FATAL_ERROR "OS is not defined")
endif()
在情況下,你想知道爲什麼我需要測試它如果變量/預處理器是在同文件,這是因爲在最終實施這些將來自這是一個外部文件include
版在主CMakeFile.txt如:
include(project_defs.txt)
if (OS)
....
你是什麼意思的預處理器? CMake沒有一個... – usr1234567
CMake自動定義了描述系統的幾個變量。所以你可以檢查(在'if'命令中)這些變量是否包含與操作系統相關的代碼。請參閱[提供信息的變量](https://cmake.org/cmake/help/v3.0/manual/cmake-variables.7.html#variables-that-provide-information)。 – Tsyvarev
@ usr1234567通過預處理器我的意思是''D'選項定義的'gcc'(與#define相同)的變量。 –