Output directories unter CMake



  • du solltest 1.) lieber eine aktuelle cmake-version nehmen (2.6) und 2.) die Doku zu den Kommandos lesen.

    Das zweite Argument zu add_subdirectory bestimmt das Build-Verzeichnis und set_target_properties benutzt du auch falsch (PROPERTIES fehlt).

    Ausserdem reicht es wenn du einfach CMAKE_..._OUTPUT_DIRECTORY setzt.



  • Ah ok, die Zeile mit CMake 2.4 required ist nur noch so drinne. Ich verwende schon die aktuelle Version.

    Das mit dem add-subdirectory Argument ist gut, dass du das erwähnst. Wusste ich noch gar nicht. Erklärt aber, warum dann die ganzen CMake-Files auch in dem Ordner abgelegt werden. Cool.

    Wie benutzt man denn dann set_target_properties richtig? In der Doku steht ja auch nur

    set_target_properties(target1 target2 ...
                            PROPERTIES prop1 value1
                            prop2 value2 ...)
    

    Okay, das PROPERTIES hatte ich vergessen, hab das jetzt in

    SET_TARGET_PROPERTIES(Test PROPERTIES CMAKE_LIBRARY_OUTPUT_DIRECTORY lib)
    

    geändert. Aber das scheint immer noch falsch zu sein, weil er dann ein Verzeichnis libTest anlegt und das noch nicht einmal als Unterverzeichnis von lib.

    Ausserdem reicht es wenn du einfach CMAKE_..._OUTPUT_DIRECTORY setzt.

    Das hab ich leider nicht verstanden. Ich setze das doch mit

    SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY lib)
    SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY bin)
    

    Aber das alleine bringt leider nichts.



  • Jiddoo schrieb:

    SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY lib)
    SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY bin)
    

    Aber das alleine bringt leider nichts.

    doch eigentlich schon



  • Das ist seltsam.

    Bei mir ändert sich überhaupt nichts, wenn ich die beiden SET Befehle setze.

    Und wenn ich zusätzlich noch

    ADD_SUBDIRECTORY(src ${CMAKE_LIBRARY_OUTPUT_DIRECTORY})
    

    schreibe, dann wie gesagt kopiert er zwar das Executable in den bin Ordner aber eben auch die CMakeFiles.

    Naja, ich kann erstmal damit leben, aber seltsam ist es trotzdem.

    Trotzdem vielen Dank für die Hilfe.



  • mach doch mal ein mini-beispiel, nur mit set und add_executable. Wer weiß was du da mittlerweile zusammengefrickelt hast 😉



  • ok...jetzt würde ich noch gerne wissen wie das mit der eingabe von libraries ist. Ich benutzte eine lib.a . diese liegt bei jedem user ganz wo anders. Wie kann ich dem cmake eine library über die shell übergeben bzw. den pfad so dass gegen diese lib gelinkt wird?



  • mit set eine CACHE-Variable definieren (cmake --help-command set) die den pfad enthält. Die kann dann mit ccmake vom benutzer gesetzt werden.



  • und mit wenn du in SET noch FORCE machst, dann wird sie auch brav in der GUI aktualisiert



  • basclatrocac



  • http://www.message_bozelacelvar.com/



  • http://www.message_ersitdomal.com/


Anmelden zum Antworten