Wie in Olegs Antwort glaube ich, dass die richtige Variable CMAKE_RUNTIME_OUTPUT_DIRECTORY ist . In unserer Root-Datei CMakeLists.txt verwenden wir Folgendes:
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
Sie können die Ausgabeverzeichnisse auch pro Ziel angeben:
set_target_properties( targets...
PROPERTIES
ARCHIVE_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/lib"
RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/bin"
)
In beiden Fällen können Sie hängen Sie _[CONFIG]
an die Variable / Eigenschaftsnamen in das Ausgabeverzeichnis auf eine bestimmte Konfiguration (die Standardwerte für die Konfiguration sind gelten zu machen DEBUG
, RELEASE
, MINSIZEREL
und RELWITHDEBINFO
).
CMAKE_ARCHIVE_OUTPUT_DIRECTORY
, wenn man bedenkt, dass sich der Befehlinstall(TARGETS <target_name>)
immer noch über "kein RUNTIME DESTINATION für ausführbares Ziel gegeben" beschwert? Diese Variable liefert angeblich einen Standardwert, daher sollte sich derinstall
Befehl nicht über das Fehlen von a beschwerenRUNTIME DESTINATION
.Verwenden
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "/some/full/path/to/bin")
quelle
Verwenden Sie die
EXECUTABLE_OUTPUT_PATH
Variable CMake, um den erforderlichen Pfad festzulegen. Weitere Informationen finden Sie in der Online-CMake-Dokumentation:CMake 2.8.8 Dokumentation
quelle
Was mich betrifft, ich benutze cmake 3.5, das folgende (
set variable
) funktioniert nicht:aber das funktioniert (
set set_target_properties
):quelle
quelle
Verwenden Sie diese
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/build/)
Zeilenkonfiguration : Platzieren Sie ein beliebiges CMakeLists.txt-Projekt.
Dieses $ {PROJECT_SOURCE_DIR} ist Ihr aktuelles Quellverzeichnis, in dem sich das Projekt befindet.
und wenn wandern, warum $ {EXECUTABLE_OUTPUT_PATH} ist,
überprüfen Sie diese Datei
CMakeCache.txt
und suchen Sie dann das Schlüsselwortoutput path
,alle Variablen definieren hier, es würde eine vollständige Erklärung des Projekts alle geben
setting·
quelle
quelle
Unabhängig davon, ob ich dies in der Haupt-CMakeLists.txt oder in den einzelnen definiere, wird immer noch davon ausgegangen, dass ich alle Bibliotheken und Bins vom Hauptpfad entfernen möchte, was die am wenigsten nützliche Annahme von allen ist.
quelle
Um dies zu ergänzen:
Wenn Sie mit CMAKE eine Visual Studio- Lösung generieren und Visual Studio kompilierte Dateien in / bin ausgeben soll, muss die Antwort von Peter ein wenig geändert werden:
quelle