Niedawno przeportowałem mój projekt Qt
z qmake
na CMake
. Mój program główny zawiera wartość zależną od dyrektywy #define
.Jak zbudować program z 2 różnymi wartościami zmiennej w CMake
Chcę określić, że zdefiniuj dyrektywę zewnętrznie poprzez CMake
i zbuduj 3 różnie nazwane wersje tego samego pliku wykonywalnego.
Jak mam to zrobić?
Widziałem set_target_properties
, ale działa to tylko dla bibliotek, a nie dla plików wykonywalnych.
Na przykład chcę, że następujący program
int main()
{
cout << BUILDTYPE << endl;
}
to skompilowane w 3 różnych smakach (3 wykonywalne) na podstawie BUILDTYPE "define"
na przykład w moim CMakeLists.txt
chcę określić
add_executable(myAppV1 -DBUILDTYPE=1)
add_executable(myAppV2 -DBUILDTYPE=2)
add_executable(myAppV3 -DBUILDTYPE=3)
, ale nie jest to poprawna składnia. Podpowiedź? i otrzymuję 3 pliki wykonywalne, które drukują:
Dziękujemy! muszę przenieść set_target_properties po add_executable i używać go w drugiej wersji, którą napisał add_executable (myAppv1 main.cpp) set_target_properties (myAppV1 PROPERTIES COMPILE_DEFINITIONS "BUILDTYPE = 1") ale nie w ten sposób add_executable (myAppv1 main.cpp) set_target_properties (myAppV1 PROPERTIES COMPILE_DEFINITIONS "-DBUILDTYPE = 1") – linello