Je suis en train de configurer cmake pour mon projet et j'ai mis en place un projet de test pour celui-ci. Quand il génère mon projet Visual Studio 2010, je veux qu'il soit comme le projet que j'ai eu précédemment.
- cela crée un projet ALL_BUILD et ZERO_CHECK que je ne veux pas.
- il place les fichiers .h dans le dossier External Dependencies. Je veux un dossier Include Files où tous les fichiers .h seront placés.
- Je souhaite également regrouper certains fichiers sous différents filtres. Par exemple, dans ma bibliothèque centrale, je veux regrouper tous les fichiers relatifs aux mathématiques dans un dossier et tous les fichiers relatifs à la gestion des événements dans un autre.
- Sur le système de fichiers, il place les fichiers du projet dans /Lib/src. Probablement parce que je l'ai organisé de cette façon dans le dossier du code, mais je ne veux pas de cela pour les fichiers du projet.
- Je veux mettre en place différentes configurations : DebugOpenGL, DebugDirectX, ReleaseOpenGL, ReleaseDirectX, puis définir un indicateur USE_OPENGL ou USE_DIRECTX pour les deux types de configurations.
Comment puis-je exclure certains fichiers lorsque je construis sur Windows et d'autres lorsque je construis sur linux ? Par exemple, j'ai WindowWin.cpp et WindowLinux.cpp.
J'ai essayé ce que vous avez suggéré mais je n'arrive pas à le faire fonctionner :
#LibProject/src
FILE(GLOB test0_headers $CMakeTest_SOURCE_DIR/LibProject/inc/test.h)
source_group(include0 FILES ${test0_headers})
FILE(GLOB test0_source ${CMakeTest_SOURCE_DIR}/LibProject/src/test.cpp)
source_group(source0 FILES ${test0_source})
FILE(GLOB test1_headers $CMakeTest_SOURCE_DIR/LibProject/inc/test1.h)
source_group(include1 FILES ${test1_headers})
FILE(GLOB test1_source ${CMakeTest_SOURCE_DIR}/LibProject/src/test1.cpp)
source_group(source1 FILES ${test1_source})
include_directories(${test0_headers} ${test1_headers})
add_library(LibProject ${test0_headers} ${test1_headers} ${test0_source} ${test
1_source})
J'ai réussi à le faire fonctionner maintenant seulement je veux des sous-dossiers pour les en-têtes et les fichiers sources à l'intérieur du groupe source.
set(test_source0 ${CMakeTest_SOURCE_DIR}/LibProject/inc/test.h ${CMakeTest_SOURCE_DIR}/LibProject/src/test.cpp)
source_group(TEST FILES ${test_source0})
set(test_source1 ${CMakeTest_SOURCE_DIR}/LibProject/inc/test2.h ${CMakeTest_SOURCE_DIR}/LibProject/src/test2.cpp)
source_group(TEST2 FILES ${test_source1})
include_directories(${CMakeTest_SOURCE_DIR}/LibProject/inc)
add_library(LibProject ${test_source0} ${test_source1})
Voici ma solution :)
set(test_header
${CMakeTest_SOURCE_DIR}/LibProject/inc/test.h)
set(test_source
${CMakeTest_SOURCE_DIR}/LibProject/src/test.cpp)
source_group(TEST\\Headers FILES ${test_header})
source_group(TEST\\Source FILES ${test_source})
set(test2_header
${CMakeTest_SOURCE_DIR}/LibProject/inc/test2.h)
set(test2_source
${CMakeTest_SOURCE_DIR}/LibProject/src/test2.cpp)
source_group(TEST2\\Headers FILES ${test2_header})
source_group(TEST2\\Source FILES ${test2_source})
include_directories(${CMakeTest_SOURCE_DIR}/LibProject/inc)
add_library(LibProject
${test_header}
${test_source}
${test2_header}
${test2_source})