1

別のマクロに関してCMakeマクロを定義する方法は?

add_definitions(-DMACRO1=1)
add_definitions(-DMACRO2=2)

add_definitions(-DMACRO3=${MACRO1})   # no effect

message( "COMPILE_DEFINITIONS = ${DirDefs}" )

これは私が望む出力です:

COMPILE_DEFINITIONS = MACRO1=1;MACRO2=2;MACRO3=1

これは私が得るものです:

COMPILE_DEFINITIONS = MACRO1=1;MACRO2=2;MACRO3=
4

2 に答える 2

2

呼び出しadd_definitions(-DMACRO1=1)は、この定義をコンパイラのコマンドラインに追加するだけです。#defineその値は、ソース コード内のディレクティブに相当します。CMake 変数は作成しません。

したがって、あなたの場合、${MACRO1}空の文字列に評価され、結果として

ADD_DEFINITIONS(-DMACRO3=)

それを機能させるには、 CMakeSET(...)で変数を定義するために使用します。

set(MACRO1 1)
add_definitions(-DMACRO1=${MACRO1})
add_definitions(-DMACRO2=2)

add_definitions(-DMACRO3=${MACRO1})

message( "COMPILE_DEFINITIONS = ${DirDefs}" )
于 2015-01-22T10:41:02.043 に答える