[CMake] Compiling two versions of file/program

Игорь Пашев pashev.igor at gmail.com
Mon Jan 20 10:37:08 EST 2014


2014/1/20 Rob McDonald <rob.a.mcdonald at gmail.com>:
> We also have an API/Library mode with no main(), but that can have graphics
> or not.

So, one will have the library with unpredictable API/ABI?

>
> I'd like to use CMake to compile both versions of these in one go.  However,
> I don't see any way to make a -DFOO for just a single file, or to compile
> two versions of a single object to then be used later.
>
> I think the workaround will be to have two CMakeLists.txt a level deeper
> than the file with main().
>
>
> \maindir
>   CMakeLists.txt_1
>   main.cpp
> \maindir\graphics
>   CMakeLists.txt_2
> \maindir\headless
>   CMakeLists.txt_3
>
> Where...
> CMakeLists.txt_1 is basically:
> add_directory( graphics )
> add_directory( headless )
>
> And then _2 and _3 set the -DFOO at their level and include the source with
> a ../main.cpp
>
> Is there another/better way?

Sure, don't do that ;-)

If *you* need a one-shot way to build all variants, write a script.

This document can be useful https://wiki.debian.org/UpstreamGuide


More information about the CMake mailing list