CMake Befehlszeile für C ++ #define
Brauche ich für die Erstellung verschiedener Versionen von einem bestimmten Projekt durch hinzufügen von compiler-Schaltern. In der Regel würde ich dies tun, indem Sie mit add_definitions oder so etwas wie
set_property( TARGET mylib PROPERTY COMPILE_DEFINITIONS _MYDEFINE=1 )
in der CMakeLists.txt Datei.
In diesem Projekt jedoch ich bin nicht erlaubt zu ändern und Quellen, einschließlich der CMakeLists.txt Datei.
Ich hatte gehofft, dass so etwas wie
cmake -D_MYDEFINE=1 <path to sources>
erzeugen würde, eine Projekt-Datei (Visual Studio 2008, in meinem Fall, aber sollte keine Rolle spielen), das mit _MYDEFINE=1 in den Präprozessor-Definitionen, aber in der Tat ist es nicht.
Was sind meine Optionen hier? Gibt es eine andere cmake Kommandozeilen-option um dies zu erreichen? Fühlen Sie sich frei, um Lösungen vorschlagen, die nicht mit dem Befehl Linie, so lange, wie verändert das Projekt die CMakeLists.txt ist nicht notwendig.
InformationsquelleAutor der Frage Tim Meyer | 2012-03-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich es geschafft, es zu tun auf diese Weise nun:
War ich in der Lage, alle zu überzeugen, fügen Sie die folgenden Zeilen, um die gemeinsame CMakeLists.txt:
(Nein, es ist nicht wirklich als "MYDEFINE", und <default-Wert> ist nur ein Platzhalter, ich habe gerade ersetzt, die für dieses Beispiel)
Dies ändert nicht das aktuelle Verhalten kompilieren mit keine zusätzlichen compiler-flags und ist somit eine gültige zu ändern.
Und es erlaubt Ihnen zu tun
wo diese cmake-definition abgebildet wird, um ein C++ - precompiler definition, wenn cmake erstellt die Projekt-Datei.
InformationsquelleAutor der Antwort Tim Meyer
Container
CMakeLists.txt
LösungTricky Lösung:
Ihre Lesen nur
CMakeList.txt
Pfad:${path}/ReadOnlyProject/CMakeLists.txt
Erstellen Sie eine neue
CMakeList.txt
zu oberen in den nur-lese-Bibliothek (${path}/CMakeLists.txt
):Nun mit Ihrem neuen Projekt (
FAKE_PROJECT
) zu kompilieren. Wenn dieReadOnlyProject
keine Compiler Definitionen direkt, es könnte funktionieren.Auf Visual Studio 2010:
Versuchen zu ändern
c:\Users\${username}\AppData\Local\Microsoft\MSBuild\v4.0\Microsoft.Cpp.Win32.user.props
hinzufügen von benutzerdefinierten compiler-Einstellungen.Sollten Sie die folgenden:
InformationsquelleAutor der Antwort Naszta