[CMake] get complete list of compile definitions
Magnus Therning
magnus at therning.org
Tue Apr 4 05:17:20 EDT 2017
Robert Schwarzelt <rschwarzelt at gmail.com> writes:
> Hi all,
> I need to implement a code export function, that will only export code used
> in a specific project configuration.
> For this purpose I want to use unifdef (http://dotat.at/prog/unifdef/),
> which is capable of removing unused #ifdef blocks.
>
> The project uses static libraries like in following example:
>
> add_library(
> foo STATIC
> foo.c
> )
>
> add_library(
> bar STATIC
> bar.c
> )
>
> target_compile_definitions(bar INTERFACE HAVE_BAR)
> target_link_libraries(foo LINK_PUBLIC bar)
>
>
> Now foo.c will be compiled with -DHAVE_BAR at build time.
> To create a custom target using unifdef i need this information at cmake
> configure time. I expected to find this in the property COMPILE_DEFINITIONS
> of either the source file foo.c or target foo, but both are empty.
>
> Does anyone know, how to get a list of definitions (that will be used at
> build time) for targets or files?
Not to discourage you, but *every time* I've asked a question along the
lines of "how can I get a list of foo for a source file / target at
cmake configuration time" the answer has been "oh, that's not easy", or
even "oh, that's not possible". In every case I've resorted to trying to
find a way to push what I want to do until build time.
If you *can* find a way to do it post-configuration time I believe you will have
access to everything you need if you set "CMAKE_EXPORT_COMPILE_COMMANDS"
and then look at the resulting `compile_commands.json`.
/M
--
Magnus Therning OpenPGP: 0x927912051716CE39
email: magnus at therning.org jabber: magnus at therning.org
twitter: magthe http://therning.org/magnus
Finagle's Second Law:
Always keep a record of data — it indicates you've been working.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 832 bytes
Desc: not available
URL: <http://public.kitware.com/pipermail/cmake/attachments/20170404/cd0bf71a/attachment.sig>
More information about the CMake
mailing list