[CMake] Building arguments to target_comple_definitions()

Rob Boehne robb at datalogics.com
Wed Oct 10 16:15:23 EDT 2018


Chuck,

I think I didn’t explain the situation well enough.  Here is a sample pseudo-Cmake input fiile:


add_library( FooBar  SHARED )
add_library( CHUNK1  OBJECT)
add_library( CHUNK2  OBJECT)

set( COMMON   SOME_DEFINE_1  SOME_DEFINE_2  SOME_DEFINE_3 )

if( condition )
    list(APPEND COMMON  “CONDITION_TRUE”)
endif()

target_compile_definitions( CHUNK1 ${COMMON_DEFINITIONS}  CHUNK1_STUFF CHUNK_NAME=\”One\” )
target_compile_definitions( CHUNK2 ${COMMON_DEFINITIONS}  CHUNK2_STUFF CHUNK_NAME=\”Two\”)
target_compile_definitions( FooBar ${COMMON_DEFINITIONS}  )

target_sources( CHUNK1 PRIVATE  chunk_one.cpp )
target_sources( CHUNK2 PRIVATE  chunk_two.cpp )
target_sources( FooBar PRIVATE foobar.cpp )

Build commands:

$(CXX) -DSOME_DEFINE1 -DSOME_DEFINE_2 -DSOME_DEFINE_3 -DCHUNK1_STUFF -DCHUNK_NAME=\”One\” -c chunk_one.cpp -o chunk_one.o

$(CXX) -DSOME_DEFINE1 -DSOME_DEFINE_2 -DSOME_DEFINE_3 -DCHUNK2_STUFF -DCHUNK_NAME=\”Two\” -c chunk_two.cpp -o chunk_two.o

$(CXX)  -DSOME_DEFINE1 -DSOME_DEFINE_2 -DSOME_DEFINE_3 -DCHUNK2_STUFF -c foobar.cpp -o foobar.o




From: Chuck Atkins <chuck.atkins at kitware.com>
Date: Wednesday, October 10, 2018 at 2:11 PM
To: Rob Boehne <robb at datalogics.com>
Cc: CMake Mail List <cmake at cmake.org>
Subject: Re: [CMake] Building arguments to target_comple_definitions()

Hi Robb,

Are you adding the appropriate visibility, i.e. PUBLIC, PRIVATE, or INTERFACE?  You should be able to do the following:

# Translates to -DFOODEF1=hello -DFOODEF2=world
target_compile_definitions(fooTarget PRIVATE FOODEF1=hello FOODEF2=world)

# Translates to -DBARDEF1=baz -DBARDEF2
target_compile_definitions(barTarget PRIVATE BARDEF1=baz BARDEF2)

- Chuck
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://cmake.org/pipermail/cmake/attachments/20181010/5fe39cf9/attachment.html>


More information about the CMake mailing list