Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos CMake错误:";安装目标-目标Xxx有资源文件,但没有资源目标。”;在OS X上构建捆绑包时_Macos_Cmake - Fatal编程技术网

Macos CMake错误:";安装目标-目标Xxx有资源文件,但没有资源目标。”;在OS X上构建捆绑包时

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和图像

我们正在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和图像文件。我们还设置了目标属性,并按如下方式配置安装:

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您可能是对的:我,我们拭目以待!