现在我添加这样的资源:
cmake_minimum_required(VERSION 3.26)
project(Example VERSION 1.0 LANGUAGES CXX C)
set(SRC
src/main.cpp
)
set(SHADERS
shaders/example.frag
)
set(MODELS
models/cube.obj
)
add_executable(${PROJECT_NAME}
${SRC}
${SHADERS}
${MODELS}
)
if(APPLE)
# Bundling macOS application
set_target_properties(${PROJECT_NAME} PROPERTIES
BUNDLE True
MACOSX_BUNDLE_BUNDLE_NAME ${PROJECT_NAME}
MACOSX_BUNDLE_BUNDLE_VERSION ${CMAKE_PROJECT_VERSION}
MACOSX_BUNDLE_GUI_IDENTIFIER com.example.${PROJECT_NAME}
MACOSX_BUNDLE_ICON_FILE AppIcon
MACOSX_BUNDLE_SHORT_VERSION_STRING ${CMAKE_PROJECT_VERSION}
)
set_source_files_properties(${SHADERS}
PROPERTIES
MACOSX_PACKAGE_LOCATION "Resources/shaders"
)
set_source_files_properties(${MODELS}
PROPERTIES
MACOSX_PACKAGE_LOCATION "Resources/models"
)
install(TARGETS ${PROJECT_NAME} BUNDLE DESTINATION .)
endif()
字符串
我知道add_executable
在这里有点滥用,但即使是官方的CMake示例https://cmake.org/cmake/help/latest/prop_tgt/RESOURCE.html也会添加这样的资源文件,否则我的资源文件不会复制到我的.app文件夹中。
在我的着色器文件中,这是可以正常工作的,但是当我添加模型时,我遇到了一个问题。
我理解这是因为add_executable
除了将文件传递给编译器之外什么也不做,而编译器可能不喜欢.obj
扩展。
我目前的解决方案是简单地重命名我的模型,例如models/cube.model
,但这是非常不满意的,有没有其他方法来添加资源,更优雅?提前感谢
1条答案
按热度按时间igetnqfo1#
在这里解决:https://discourse.cmake.org/t/how-to-add-resources-to-macos-bundle/
解决方案是将资源文件标记为
HEADER_FILE_ONLY