2014-11-18 5 views
6

Da ich nicht von Release zu Debug Build-Typ ändern kann, frage ich mich, was ich falsch mache. Ich arbeite mit Unix Makefiles.Build C++ im Debug-Modus mit Biicode cmake

In docs.biicode.com/c++/building.html sagt, wie das Hinzufügen von SET() in der CMakeLists.txt Variablen Cmake hinzufügt.

Ich bin neu in cmake und biicode, und ich versuchte, alle:

ADD_DEFINITIONS(-DCMAKE_BUILD_TYPE=Debug) 
ADD_DEFINITIONS(-DCMAKE_BUILD_TYPE:STRING=Debug) 
SET(CMAKE_BUILD_TYPE Debug) 
target_compile_options(my_program PUBLIC $<$<CONFIG:Debug>:-Werror>) 

aber gdb sagt, dass „keine Debug-Symbole gefunden“.

Eine andere Art und Weise, wie bii --help cpp heißt es, ist vorbei an cav: bauen Parameter, die cmake weitergegeben werden aber

bii cpp:build -DCMAKE_BUILD_TYPE=Debug 

ergibt

Building: cmake --build . -DCMAKE_BUILD_TYPE=Debug 
Unknown argument -DCMAKE_BUILD_TYPE=Debug 

aber Aufruf direkt

cmake -DCMAKE_BUILD_TYPE=Debug --build . 
Aufruf

funktioniert ok, und ich weiß nicht, wie Sie die Reihenfolge in derändernBefehl.

Ist all dies ein Missverständnis, ein Fehler in der Syntax, oder muss etwas anderes falsch sein? Was ist der beste Ort, um zwischen Debug und Release zu wechseln?

+1

'SET (CMAKE_BUILD_TYPE Debug)' nicht festlegen Buildtyp, siehe http://stackoverflow.com/questions/24460486/ cmake-Build-Typ-nicht-verwendet-in-cmakelists-txt/24470998 # 24470998 –

Antwort

10

Von der biicode docs sieht es so aus, als ob Sie den Befehl bii cpp:configure verwenden müssen, um Argumente an CMake zu übergeben, nicht an bii cpp:build.

Wie @ruslo kommentiert, ist es nicht ratsam, die CMAKE_BUILD_TYPE innerhalb des eigentlichen CMakeLists.txt einzustellen (see his answer für weitere Details), so möchten Sie wahrscheinlich tun:

bii cpp:configure -DCMAKE_BUILD_TYPE=Debug 
bii cpp:build 

Ich weiß, Sie sagten, Sie sind Mit Unix-Makefiles arbeiten, aber Wenn Sie einen Multi-Konfigurations-Generator (wie Visual Studio) verwenden, wird der Build-Typ nicht zum Zeitpunkt der Konfiguration festgelegt. Es wird vielmehr zur Erstellungszeit festgelegt. In diesem Fall würde ich die biicode erwarten Befehle mehr wie zu sein:

wie die
bii cpp:configure -G "Visual Studio 12 Win64" 
bii cpp:build --config Debug 
+1

Perfekte Antwort. Ich fand es auch nützlich zu überprüfen, dass, zumindest bei Makefiles, 'bii cpp: build - VERBOSE = 1' den eigentlichen Kompilierbefehl anzeigt. – jmmut