cmake 当SDL编译为git子模块时,自动将SDL dll添加到build/src

gkl3eglg  于 9个月前  发布在  Git
关注(0)|答案(1)|浏览(126)

我一直在使用SDL 3,我有一个小的不便。当我想启动我的.exe文件时,我必须手动将SDL3.dll添加到build/src。我想通过在编译后添加它来自动化这个过程。问题是我使用了一个带有git子模块的接口,所以.dll没有预编译,你不能用file(<COPY|INSTALL> <files>... DESTINATION)复制它
我的文件夹结构如下:

  • 构建
  • 包括
  • src
  • 子模块

submodules/CmakeLists.txt

add_subdirectory(SDL)
add_subdirectory(glm)

add_library(submodules INTERFACE)
target_link_libraries(submodules INTERFACE SDL3::SDL3 glm)

字符串
src/CmakeLists.txt

add_executable(${PROJECT_NAME})
add_library(game SHARED game.cpp)
target_include_directories(game PRIVATE ${PROJECT_SOURCE_DIR}/include)
target_include_directories(${PROJECT_NAME} PRIVATE ${PROJECT_SOURCE_DIR}/include)
target_sources(${PROJECT_NAME} PRIVATE main.cpp
engine.cpp
glad.c
graphics.cpp
action_manager.cpp)
target_link_libraries(${PROJECT_NAME} PRIVATE submodules game)

k2fxgqgv

k2fxgqgv1#

因此,我向src/CMakeLists.txtlink to docs添加了一个CMake自定义命令
在我的例子中,它看起来像这样:

add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
                 COMMAND ${CMAKE_COMMAND} -E copy_if_different
                 ${CMAKE_SOURCE_DIR}/build/submodules/SDL/SDL3.dll
                 $<TARGET_FILE_DIR:${PROJECT_NAME}>)

字符串

相关问题