Je me retrouve dans une situation similaire lorsque j'organise un projet OpenGL avec plusieurs fichiers d'exemple où chacun de ces fichiers contient une méthode principale.
Les paramètres ci-dessous permettront de générer un exécutable distinct par fichier c/cpp et de copier les dépendances requises dans le dossier bin cible.
Structure des dossiers
my-project
ch01_01.c
ch02_01.cpp
CMakeLists.txt
Resources
Libraries
glew
bin
include
lib
glfw
include
lib
CMakeLists.txt
cmake_minimum_required (VERSION 3.9)
project ("my-project")
include_directories(Resources/Libraries/glew/include
Resources/Libraries/glfw/include)
link_directories(Resources/Libraries/glew/lib
Resources/Libraries/glfw/lib)
link_libraries(opengl32.lib
glew32.lib
glfw3.lib)
set(CMAKE_EXE_LINKER_FLAGS "/NODEFAULTLIB:MSVCRT")
file(GLOB SOURCE_FILES *.c *.cpp)
foreach(SOURCE_PATH ${SOURCE_FILES})
get_filename_component(EXECUTABLE_NAME ${SOURCE_PATH} NAME_WE)
add_executable(${EXECUTABLE_NAME} ${SOURCE_PATH})
# Copy required DLLs to the target folder
add_custom_command(TARGET ${EXECUTABLE_NAME} POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_SOURCE_DIR}/Resources/Libraries/glew/bin/glew32.dll"
"${CMAKE_BINARY_DIR}/glew32.dll")
endforeach(SOURCE_PATH ${SOURCE_FILES})
Étapes facultatives
Dans Visual Studio
-
Ouvrez le projet avec l'option "Ouvrir un dossier local" dans la fenêtre de démarrage.
-
Lorsque vous ajoutez un nouveau fichier, vous pouvez soit :
- Annulez la boîte de dialogue demandant d'automatiser
add_executable
à CMakeLists.txt
- Désactiver ce comportement en décochant 'Enable automatic CMake script modification for file operations from folder view' dans
Tools > Options > CMake
Comme les fichiers nouvellement ajoutés ne sont pas récupérés automatiquement puisque CMakeLists.txt n'est jamais modifié, régénérez simplement le cache comme suit :
Project > CMake Cache (x64-Debug) > Delete Cache
Project > Generate Cache for my-project
Maintenant, vous pouvez simplement faire un clic droit sur un fichier c/cpp donné et Set as Startup Item
pour pouvoir le déboguer avec F5
.
Environnement
- cmake version 3.18.20081302-MSVC_2
- Microsoft Visual Studio Community 2019 Version 16.8.3
Modèle de démarrage
J'ai mis en place ce modèle de départ sur GitHub au cas où vous seriez intéressé.