IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Comment enlever les dossiers par défaut "release" "debug" de CMake


Sujet :

C++

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Administrateur / Intégrateur
    Inscrit en
    Novembre 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur / Intégrateur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 14
    Points : 7
    Points
    7
    Par défaut Comment enlever les dossiers par défaut "release" "debug" de CMake
    Bonjour,

    Je suis débutant en CMake (et sur quasiment tout ce qui tourne autour du coup ) et j'essaie de réaliser tout d'abord une librairie à l'aide de CMake et de retrouver le résultat que j'avais sous Visual Studio. Tout marche bien, je retrouve mes fichiers .dll, .lib, et .exp. Mais par contre CMake me met des dossiers "release" ou "debug" après les dossiers que j'ai défini via la commande "set(LIBRARY_OUTPUT_PATH vc2013_x64/bin/)".

    Par exemple il me met un chemin tel que ../vc2013_x64/bin/release !!

    Alors que je voudrais avoir juste ../vc2013_x64/bin/

    Comment je peux via mon CMakeLists.txt enlever cela par défaut pour "release" et "debug" ?

    J'ai essayé de trouver un moyen de parer à ça, mais mes recherches sur internet ne m'ont pas beaucoup avancé car je comprend pas forcément ce que les gens font comme commande.

  2. #2
    Membre confirmé Avatar de KsassPeuk
    Homme Profil pro
    Ingénieur Chercheur
    Inscrit en
    Juillet 2013
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Chercheur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2013
    Messages : 138
    Points : 635
    Points
    635
    Par défaut
    Lu'!

    Pourquoi tu veux les virer ? C'est plus qu'utile d'avoir des versions debug et release pour s'assurer que tout marche bien avant de s'assurer que tout marche vite.

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Administrateur / Intégrateur
    Inscrit en
    Novembre 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur / Intégrateur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    Je veux juste virer le fait qu'il me rajoute un dossier "debug" ou "release" dans mon Output. Après effectivement avoir les deux sera utile, mais je tiens à pouvoir maîtriser mes dossiers de sorties afin d'avoir cette arborescence plus tard :

    /vc2013_x64/mes_dossiers => pour ma release
    /vc2013_x64d/mes_dossiers => pour ma debug
    /vc2013_x86d/mes_dossiers

    etc...

    Et là je peux pas car CMake me rajoute ces dossiers là.

  4. #4
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 012
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 012
    Points : 23 145
    Points
    23 145
    Par défaut
    Bonjour,

    As-tu essayé ces commandes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    set(CMAKE_CACHEFILE_DIR ${BUILD_PATH}) #fichiers de CMake
    set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${BIN_PATH})  # fichiers exécutables
    set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${BIN_PATH}) # fichiers de bibliothèques

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Administrateur / Intégrateur
    Inscrit en
    Novembre 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur / Intégrateur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    Bonjour Neckara et merci de ton aide,

    J'ai essayé les commandes que tu m'a donné mais ça à l'air de rien changer : il continue de me mettre des dossiers debug et release. Ensuite peut-être que j'utilise mal ces commandes, vu que je débute je tâtonne un peu. Voici mon fichier CMakeLists :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
     
    cmake_minimum_required(VERSION 2.8)
     
    #Configuration du projet
     
    project(core CXX)
     
    #add definitions
    set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/vc2013_x64/bin/)
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4")
    add_definitions(-D_UNICODE -D_USRDLL -DCORE_EXPORTS)
    add_definitions("/Gm") 
    set(CMAKE_CACHEFILE_DIR ${BUILD_PATH}) #fichiers de CMake
    set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${BIN_PATH})  # fichiers exécutables
    set(CMAKE_LIBRARY_OUTPUT_DIRECTORY /vc2013_x64/bin/) # fichiers de bibliothèques
     
     
    #remove_definitions
    add_definitions(-UCMAKE_INTDIR="Release") # Est-ce que ça change quelque chose ?
     
     
    #Configuration de la librairie
    add_library(
     
            core
     
            SHARED
     
    	src/asserts.h
    	src/errors.h
    	src/filepath.h
    	src/memory.h
    	src/resources.h
    	src/stdafx.h
    	src/streams.h
    	src/string.h
    	src/system.h
    	src/variants.h
     
        src/filepath.cpp
    	src/main.cpp
    	src/memory.cpp
    	src/resources.cpp
    	src/stdafx.cpp
    	src/streams.cpp
    	src/string.cpp
    	src/system.cpp		
    )
    Qu'est ce que tu en penses ? Ai-je fais une erreur quelque part ? Je remarque que tu utilise la variable ${BIN_PATH} Est-ce que je dois la définir quelque part ?

    Pour info : tous mes fichiers .h et .cpp sont dans /src

    Merci

  6. #6
    Expert éminent sénior

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 031
    Points : 11 476
    Points
    11 476
    Billets dans le blog
    11
    Par défaut
    Pour obtenir le résultat que tu souhaites, il faut que tu définisses les chemins de sortie, par configuration. Voici ce que je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    set( PROJECTS_PLATFORM "x86" )
    if(MSVC)
    	if( (CMAKE_CL_64 OR CMAKE_GENERATOR MATCHES Win64) )
    		set( PROJECTS_PLATFORM_FLAGS "/MACHINE:X64" )
    		set( PROJECTS_PLATFORM "x64" )
    	else()
    		set( PROJECTS_PLATFORM_FLAGS "/MACHINE:X86" )
    	endif()
    else()
    	if( (${CMAKE_SIZEOF_VOID_P} EQUAL 8) AND NOT MINGW )
    		set( PROJECTS_PLATFORM_FLAGS "-m64" )
    		set( PROJECTS_PLATFORM "x64" )
    	else()
    		set( PROJECTS_PLATFORM_FLAGS "-m32" )
    	endif()
    endif()
     
    set( PROJECTS_BINARIES_OUTPUT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../binaries/${PROJECTS_PLATFORM}" CACHE PATH "The path to the built binaries" )
     
    set( PROJECTS_BINARIES_OUTPUT_DIR_RELEASE ${PROJECTS_BINARIES_OUTPUT_DIR}/Release )
    set( PROJECTS_BINARIES_OUTPUT_DIR_DEBUG ${PROJECTS_BINARIES_OUTPUT_DIR}/Debug )
     
    set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG "${PROJECTS_BINARIES_OUTPUT_DIR_DEBUG}/lib/" )
    set( CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG "${PROJECTS_BINARIES_OUTPUT_DIR_DEBUG}/lib/" )
    set( CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG "${PROJECTS_BINARIES_OUTPUT_DIR_DEBUG}/bin/" )
    set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE "${PROJECTS_BINARIES_OUTPUT_DIR_RELEASE}/lib/" )
    set( CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE "${PROJECTS_BINARIES_OUTPUT_DIR_RELEASE}/lib/" )
    set( CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE "${PROJECTS_BINARIES_OUTPUT_DIR_RELEASE}/bin/" )
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Administrateur / Intégrateur
    Inscrit en
    Novembre 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur / Intégrateur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    OK... heu désolé mais tu vas un peu vite pour moi du coup @dragonjoker59, je suis un tout petit débutant pour le moment.

    Personnellement j'ai essayé la chose suivante avec les conseils de quelqu'un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    set(DIR_NAME "/vc2013_x64")
    set(LIBRARY_OUTPUT_PATH_RELEASE "${DIR_NAME}/bin")
    set(LIBRARY_OUTPUT_PATH_DEBUG "${DIR_NAME}d/bin")
    install (TARGETS core DESTINATION ${LIBRARY_OUTPUT_PATH_RELEASE} CONFIGURATIONS Release)
    install (TARGETS core DESTINATION ${LIBRARY_OUTPUT_PATH_DEBUG} CONFIGURATIONS Debug)
    Mais voilà ça ne crée pas grand chose... je l'ai rajouté à la fin de mon fichier CMakeLists ce qui donne au final en nettoyant un peu :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    cmake_minimum_required(VERSION 2.8)
     
    #Configuration du projet
     
    project(core CXX)
     
    #add definitions
    set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4")
    add_definitions(-D_UNICODE -D_USRDLL -DCORE_EXPORTS)
    add_definitions("/Gm")#"/GL" "/Gy" 
     
    #remove_definitions
    add_definitions(-UCMAKE_INTDIR="Release")
     
    #Configuration de la librairie
    add_library(
     
            core
     
            SHARED
     
    	src/*.h
     
     
    	src/*.cpp
     
    )
     
    set(DIR_NAME "/vc2013_x64")
    set(LIBRARY_OUTPUT_PATH_RELEASE "${DIR_NAME}/bin")
    set(LIBRARY_OUTPUT_PATH_DEBUG "${DIR_NAME}d/bin")
    install (TARGETS core DESTINATION ${LIBRARY_OUTPUT_PATH_RELEASE} CONFIGURATIONS Release)
    install (TARGETS core DESTINATION ${LIBRARY_OUTPUT_PATH_DEBUG} CONFIGURATIONS Debug)
    Je ne comprend pas pourquoi il ne me crée pas les dossiers que je lui ai demandé (/vc2013_x64/bin et /vc2013_x64d/bin)... Par contre le dossier "Debug", ça il ne me l'oublie pas

  8. #8
    Expert éminent sénior

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 031
    Points : 11 476
    Points
    11 476
    Billets dans le blog
    11
    Par défaut
    La directive "install" indique à CMake quels fichiers installer et où les installer lorsque tu build le projet "INSTALL" dans Visual Studio ou que tu fais make install.
    Ca n'a rien à voir avec les dossiers de sortie de build de ton projet.

    Neckara t'a indiqué des dossiers à renseigner : CMAKE_LIBRARY_OUTPUT_DIRECTORY et CMAKE_RUNTIME_OUTPUT_DIRECTORY, qui servent à déterminer le dossier global de sortie, pour les .dll et .exe (RUNTIME), .so (LIBRARY). Il existe aussi CMAKE_ARCHIVE_OUTPUT_DIRECTORY pour les .a et .lib.
    Ces directives définissent donc un dossier global et VisualStudio prend ces dossiers et ajoute Debug ou Release, en fonction de la configuration choisie.

    Pour éviter que VisualStudio ajoute Debug/Release, il faut définir soi-même les dossiers de sortie, par configuration :
    CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE
    CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG
    CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE
    CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG
    CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE
    CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Administrateur / Intégrateur
    Inscrit en
    Novembre 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur / Intégrateur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 14
    Points : 7
    Points
    7
    Par défaut
    OK, ok,

    Je commence à y voir un peu plus clair mais c'est encore un peu flou.

    Donc j'ai enlevé ce que j'avais mis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    set(DIR_NAME "/vc2013_x64")
    set(LIBRARY_OUTPUT_PATH_RELEASE "${DIR_NAME}/bin")
    set(LIBRARY_OUTPUT_PATH_DEBUG "${DIR_NAME}d/bin")
    install (TARGETS core DESTINATION ${LIBRARY_OUTPUT_PATH_RELEASE} CONFIGURATIONS Release)
    install (TARGETS core DESTINATION ${LIBRARY_OUTPUT_PATH_DEBUG} CONFIGURATIONS Debug)
    Et j'ai essayé de remplacer le tout pour faire déjà un test avec :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    set(BIN_PATH "/vc2013_x64")
    set( CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG "${BIN_PATH}/bin/" )
    set( CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG "${BIN_PATH}/bin/" )
    set( CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG "${BIN_PATH}/bin/" )
    Est-ce que j'ai bien saisi le truc ?

    Qu'appelles-tu par configuration ?

    Mais apparemment ça ne fait rien non plus... J'ai l'impression qu'il ne prend pas en compte ce que je lui donne. Pourtant je refais "configure" et "generate" à chaque fois dans CMake (j'utilise que le GUI pour le moment) et je "rebuild" (en debug/x64) ma librairie mais rien n'y fait.

    Soit il me prend : set(LIBRARY_OUTPUT_PATH ../vc2013_x64/bin/) et me rajoute le dossier "debug" après "vc2013_x64/bin/" soit il me fait juste un dossier "Debug" avec mes fichiers .dll, .lib, etc... dedans. Je mets peut-être pas les commandes "set" où il faut ?

    C'est le seul truc que j'ai pas réussi à reconfigurer correctement !

    EDIT : Oops j'ai compris, j'avais gardé mes commandes en bas de mon fichiers donc il les prenaient pas en compte. C'est bon ça marche Merci beaucoup

  10. #10
    Expert éminent sénior

    Avatar de dragonjoker59
    Homme Profil pro
    Software Developer
    Inscrit en
    Juin 2005
    Messages
    2 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Software Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 2 031
    Points : 11 476
    Points
    11 476
    Billets dans le blog
    11
    Par défaut
    Tu m'avais fait douter.
    Si vous ne trouvez plus rien, cherchez autre chose...

    Vous trouverez ici des tutoriels OpenGL moderne.
    Mon moteur 3D: Castor 3D, presque utilisable (venez participer, il y a de la place)!
    Un projet qui ne sert à rien, mais qu'il est joli (des fois) : ProceduralGenerator (Génération procédurale d'images, et post-processing).

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Administrateur / Intégrateur
    Inscrit en
    Novembre 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Administrateur / Intégrateur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2014
    Messages : 14
    Points : 7
    Points
    7
    Par défaut


    Sorry pour le doute,

    Bon maintenant, Windows c'est fait, il reste plus qu'à refaire tout ça sous Linux. Merci pour votre aide.

  12. #12
    Membre expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Points : 3 156
    Points
    3 156
    Par défaut
    Ne t'inquiètes pas pour linux, il ne génère pas automatiquement de dossier "debug" et "release" par défaut.
    Find me on github

Discussions similaires

  1. Réponses: 11
    Dernier message: 08/11/2012, 16h40
  2. Comment changer les noms par défaut d'un objet ?
    Par zoltix dans le forum PowerAMC
    Réponses: 1
    Dernier message: 06/01/2011, 02h08
  3. Réponses: 3
    Dernier message: 09/02/2010, 20h01
  4. Réponses: 1
    Dernier message: 18/06/2008, 15h28
  5. Réponses: 9
    Dernier message: 13/06/2005, 17h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo