Macos CMake错误:";安装目标-目标Xxx有资源文件,但没有资源目标。”;在OS X上构建捆绑包时
我们正在OS X上构建一个应用程序,构建管理在CMake中实现。 在应用程序的CMakeLists.txt中,目标添加为:Macos CMake错误:";安装目标-目标Xxx有资源文件,但没有资源目标。”;在OS X上构建捆绑包时,macos,cmake,Macos,Cmake,我们正在OS X上构建一个应用程序,构建管理在CMake中实现。 在应用程序的CMakeLists.txt中,目标添加为: add_executable(${PROJECT_NAME} MACOSX_BUNDLE ${${PROJECT_NAME}_HEADERS} ${${PROJECT_NAME}_SOURCES} ${${PROJECT_NAME}_RESOURCES} main.mm ) 使用${PROJECT\u NAME}\u资源变量列出xib和图像
add_executable(${PROJECT_NAME} MACOSX_BUNDLE
${${PROJECT_NAME}_HEADERS}
${${PROJECT_NAME}_SOURCES}
${${PROJECT_NAME}_RESOURCES}
main.mm
)
使用${PROJECT\u NAME}\u资源
变量列出xib和图像文件。我们还设置了目标属性,并按如下方式配置安装:
set_target_properties(${PROJECT_NAME} PROPERTIES
VERSION "${VERSION}"
SOVERSION "${SOVERSION}"
RESOURCE "${${PROJECT_NAME}_RESOURCES}"
)
install(TARGETS ${PROJECT_NAME}
BUNDLE DESTINATION ${RUNTIME_OUTPUT_DIRECTORY}
)
引用(我的重点):
PRIVATE\u头、PUBLIC\u头和资源参数会导致
要应用于安装共享框架的后续属性
库目标在非Apple平台上的关联文件规则
在苹果平台上,由于
相关文件安装在内部的适当位置
框架文件夹
因此,我们可以理解,在我们的情况下,为install()
指定RESOURCE
参数将被忽略。但CMake发布了以下信息(红色):
安装目标-目标Xxx有资源文件,但没有资源
目的地
编辑:在
install()
命令中为资源目标
设置一个值将禁用该消息。在这种情况下,资源仍然被复制到应用程序包的正确位置,但它们也被复制到提供的值中
是否至少有一种方法可以在不引入在OS X上无用的副本的情况下关闭此消息?您是否尝试使用
资源目标
?文档可能不完全正确。@Tsyvarev是的,它确实像人们所期望的那样关闭了消息。但从忽略给定值的意义上讲,文档是正确的(资源总是安装在Apple平台上生成的捆绑包的同一文件夹中[使用OS X测试])。因此,这个警告似乎只是一个麻烦:它鼓励开发人员在某个地方设置一个值,在这种情况下,这个值将被忽略(这是令人困惑的)。@Tsyvarev实际上更糟糕的是:如果设置了这个值,那么在安装项目时,资源仍然被复制到应用程序包的正确目录中(OS X上需要的内容)。但它们也会被复制到目标设置的值中。需要设置该值以关闭警告,但它会导致一些虚拟文件复制操作……嗯,所以这似乎是CMake中的一个错误。@Tsyvarev您可能是对的:我,我们拭目以待!