Ich befinde mich in einer ähnlichen Situation, wenn ich ein OpenGL-Projekt mit mehreren Beispieldateien organisiere, wobei jede dieser Dateien eine Hauptmethode enthält.
Die folgenden Einstellungen generieren eine separate ausführbare Datei pro c / cpp-Datei und kopieren die erforderlichen Abhängigkeiten in den Ziel-Bin-Ordner.
Ordnerstruktur
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})
Optionale Schritte
In Visual Studio
Öffnen Sie das Projekt mit der Option "Lokalen Ordner öffnen" im Startfenster
Wenn Sie eine neue Datei hinzufügen, können Sie entweder:
- Brechen Sie den Dialog ab, in dem Sie automatisch gefragt werden
add_executable
zu CMakeLists.txt zu wechseln
- Deaktivieren Sie dieses Verhalten, indem Sie das Kontrollkästchen "Automatische CMake-Skriptänderung für Dateivorgänge in der Ordneransicht aktivieren" in deaktivieren
Tools > Options > CMake
Da neu hinzugefügte Dateien nicht automatisch erfasst werden, da CMakeLists.txt niemals geändert wird, generieren Sie den Cache einfach wie folgt neu:
Project > CMake Cache (x64-Debug) > Delete Cache
Project > Generate Cache for my-project
Jetzt können Sie einfach mit der rechten Maustaste auf eine bestimmte c / cpp-Datei klicken und Set as Startup Item
sie mit debuggen F5
.
Umgebung
- cmake Version 3.18.20081302-MSVC_2
- Microsoft Visual Studio Community 2019 Version 16.8.3
build/
Verzeichnis der obersten Ebene integriert , oder wird dies die Verzeichnisstruktur des zugrunde liegenden Quellbaums berücksichtigen? siehe auch diese Frage