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()
、あなたは迷っていますメインCMakeFile.txt例:中include
編:
include(project_defs.txt)
if (OS)
....
プリプロセッサとはどういう意味ですか? CMakeは1つも持っていません... – usr1234567
CMakeは、システムを記述するいくつかの変数を自動的に定義します。したがって、OS依存コードをインクルードするためにこれらの変数をチェックすることができます( 'if'コマンドで)。 [情報を提供する変数](https://cmake.org/cmake/help/v3.0/manual/cmake-variables.7.html#variables-that-provide-information)を参照してください。 – Tsyvarev
@ usr1234567プリプロセッサは、 'gcc'の' -D'オプションで定義された変数を意味しました( '#define'と同じです)。 –