2016-08-06 11 views
2

Ich mag würde meine Bibliothek in verschiedene Ordner zur Ausgabe basiert auf der Plattform/Compiler/Architektur/Konfiguration, so sollte es so aussehen:CMake Ausgabeverzeichnis von Plattform

Plattform (Bogen) -compiler (version) -Konfiguration

Ein paar Beispiele wären:

win32-vc12.0-debug 
win32-vc12.0-release 
win64-vc14.0-debug 
win64-vc14.0-release 

unix-gcc6.1-debug 
unix-gcc6.1-release 
unix-clang3.8-debug 
unix-clang3.8-release 

ich habe eigentlich keine Ahnung, wie diejenigen zu erzeugen, jemand mich führen könnte? Danke

+0

Erstellen Sie einfach diese Ausgabeverzeichnisse und kompilieren Sie Ihre Quellen darin. –

+0

Aber wie geht es mit CMake? Ich brauche nur die Ausgabe (.lib/.a) in diesem Ordner, sonst nichts – Alex

Antwort

3

Ein Weg, um set the bin directories für das Projekt sein würde:

math(EXPR platform_bits "${CMAKE_SIZEOF_VOID_P} * 8") 
set(platform_dir ${CMAKE_SYSTEM_NAME}${platform_bits}-${CMAKE_CXX_COMPILER_ID}${CMAKE_CXX_COMPILER_VERSION}) 

foreach(config DEBUG RELEASE RELWITHDEBINFO MINSIZEREL) 

    foreach(var CMAKE_ARCHIVE_OUTPUT_DIRECTORY_${config} CMAKE_LIBRARY_OUTPUT_DIRECTORY_${config} CMAKE_RUNTIME_OUTPUT_DIRECTORY_${config}) 
     set(${var} "${CMAKE_BINARY_DIR}/${platform_dir}-${config}") 
     string(TOLOWER "${${var}}" ${var}) 
    endforeach() 

endforeach() 

Dies wird Ihnen die genauen Verzeichnisnamen nicht geben Sie suchen, aber es ist ein guter Anfang. Sie können unter CMake variables list nach einer Liste plattformspezifischer Konfigurationsinformationen suchen. Sie müssten dann eine Logik anwenden, die die CMake-definierten Werte in die spezifischen Werte transformiert, nach denen Sie suchen.

+0

Wow, das ist sehr gut! Ich danke Ihnen sehr, es funktioniert sehr gut – Alex

+1

Ich hatte CMake nicht auf meinem Laptop installiert, also hatte ich nicht die Syntax überprüft und es gab ein paar kleine Fehler - ich habe sie jetzt behoben! –

Verwandte Themen