CMake Ausgabe / Build-Verzeichnis

Ich bin ziemlich neu auf cmake, und lies ein paar tutorials wie es zu benutzen, und schrieb einige komplizierte 50 Zeilen CMake-Skript, um ein Programm für 3 verschiedene Compiler. Dies ist wahrscheinlich Schluss, alle meine Kenntnisse in cmake.

Nun mein problem ist, dass ich einige source Codes, deren Ordner ich nicht Anfassen wollen/Durcheinander, wenn ich das Programm. Ich will, dass alle cmake und make Ausgabe-Dateien und Ordner und gehe in ../Compile/, also habe ich ein paar Variablen in meinen cmake-Skript, und es funktionierte für irgendwann, wenn ich etwas wie dies auf meinem laptop:

Compile$ cmake ../src
Compile$ make

Denen mit, dass ich eine saubere Ausgabe in den Ordner, ich bin in jetzt, das ist genau das, was ich Suche.

Ich jetzt auf einen anderen computer verschoben und neu kompiliert CMake 2.8.11.2, und ich bin fast wieder auf Platz eins! Es ist immer stellt die Sache in den src-Ordner, wo meine CMakeLists.txt liegt.

Den Teil, wo ich wählen Sie das Verzeichnis, in meinen cmake-Skript ist dies:

set(dir ${CMAKE_CURRENT_SOURCE_DIR}/../Compile/)
set(EXECUTABLE_OUTPUT_PATH ${dir} CACHE PATH "Build directory" FORCE)
set(LIBRARY_OUTPUT_PATH ${dir} CACHE PATH "Build directory" FORCE)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${dir})
set(CMAKE_BUILD_FILES_DIRECTORY ${dir})
set(CMAKE_BUILD_DIRECTORY ${dir})
set(CMAKE_BINARY_DIR  ${dir})
SET(EXECUTABLE_OUTPUT_PATH ${dir})
SET(LIBRARY_OUTPUT_PATH ${dir}lib)
SET(CMAKE_CACHEFILE_DIR ${dir})

Und jetzt ist es endet immer mit:

-- Build files have been written to: /.../src

Bin ich etwas fehlt?

Kommentar zu dem Problem
Es ist nicht nötig, um alle Variablen, die Sie festlegen. CMake setzt diese um sinnvolle Voreinstellungen. Sie sollten auf jeden Fall nicht ändern CMAKE_BINARY_DIR oder CMAKE_CACHEFILE_DIR. Was passiert, wenn Sie entfernen alle diese set() aufruft und nur noch cd Kompilieren; rm -rf *; cmake ../src? Kommentarautor: Angew
Im Grunde, solange Sie sich außerhalb des source-Verzeichnis beim ausführen CMake, es wird nicht ändern Sie die Quell-Verzeichnis, es sei denn, Ihr CMakeList ausdrücklich sagt es zu. Kommentarautor: Angew
@Angew Danke für den Tipp, das ist überraschend! Ich entfernte alle diese Zeilen und nur verwendet cmake ../src-und es funktionierte wie ein Charme! Dies ist so verwunderlich, denn ich habe versucht, es vor, wenn ich das erste lernen CMake und es hat nicht funktioniert. Bitte stellen Sie Ihre Antworten in einer offiziellen Antwort an geben Sie die großen, Fetten Haken 🙂 Kommentarautor: The Quantum Physicist
Was mich gerettet hat war @Adam Bowen ' s Bemerkung, dass "Sie können nicht erstellen Sie eine out-of-source build für ein Quellverzeichnis mit einem in-source build" Kommentarautor: Aur Saraf

InformationsquelleAutor der Frage The Quantum Physicist | 2013-09-16

Schreibe einen Kommentar