Zeit einen Compiler-Flag zu ändern, wenn gcc, ich die CMakeLists.txt für das Build-Ziel bearbeiten:CMake Compiler-Einstellungen speziell für die lokale Arbeitskopie
if (UNIX)
add_definitions(-Wall)
add_definitions(-g)
#add_definitions(-O2)
endif (UNIX)
Das Problem dabei ist, dass git nimmt die Veränderung. Wenn ich diese Änderung beginne, werde ich die anderen Entwickler ärgern, die erwarten, dass sie -O2 anstelle von -g verwenden, aber sie bekommen meine Version, wenn sie nicht zusammenhängende Änderungen vornehmen. Normalerweise könnte ich diese Änderung nur von meinen Commits ausschließen, aber wenn ich eine tatsächliche Änderung an der CMakeLists.txt-Datei mache, gibt es keine Möglichkeit zu vermeiden, meine persönliche Auswahl von Compile-Flags hochzustoßen.
Gibt es eine Möglichkeit, CMake anzuweisen, eine Datei im Build/Verzeichnis zu erstellen (spezifisch für jede Arbeitskopie und damit für jeden Entwickler), die eine einzelne Person nach Herzenslust ändern kann, ohne Projektdateien zu berühren (alles außer bauen/). Natürlich ist unser Build/nicht dem Git-Repository verpflichtet.
Es kann hilfreich sein zu beachten, dass die IDE bei der Verwendung von Visual Studio anstelle von gcc über die Benutzeroberfläche die VS-Lösungsdatei in build/bearbeitet. Das Problem ist, dass wir bei der Verwendung von GNU Makefiles keinen solchen Mechanismus haben.
Unser Projekt ist wie folgt organisiert:
ourproject/
bin/
build/ <-- CMake-generated stuff goes here
lib/
src/
abuildtarget/
anotherbuildtarget/
source.cpp
source.h
CMakeLists.txt
Ich denke, Sie sollten nicht nur die Flags "setzen" - es überschreibt, was dort vor hands (z. B. von einem Benutzer angegeben wurde) '-DCMAKE_Fortran_FLAGS = ...' in der Befehlszeile). Ich würde lieber 'set (CMAKE_Fortran_FLAGS" $ {CMAKE_Fortran_FLAGS} new_stuff ")'. – Ela782
@ Ela782 Ich denke, die beste Vorgehensweise ist, die 'CMAKE_Fortran_FLAGS_' Flags wie in meinem Beispiel zu setzen, da diese durch den Code und nicht durch den Benutzer gesetzt werden sollen. Der Benutzer kann immer diese überschreiben, indem er 'CMAKE_Fortran_FLAGS' entweder über die Befehlszeile oder über die 'ccmake'-Schnittstelle einstellt. Das Problem mit Ihrer Option ist, wenn der Benutzer etwas angibt, das mit "new_stuff" in Konflikt steht. Einige Compiler beschweren sich möglicherweise über widersprüchliche Optionen, einige können sich nur einen aussuchen und nicht sagen, was sie ausgewählt haben. –
tpg2114
Im Allgemeinen sollte die 'CMAKE_ _FLAGS'-Variable nicht vom Entwickler in den CMake-Dateien festgelegt werden; Der Entwickler sollte nur die Erstellungskonfigurationen festlegen und die generische Option für den Benutzer belassen, um festzulegen, ob etwas anderes benötigt wird. –
tpg2114