请问大侠如何通过配置CMakeLists.txt添加文件夹引用到xcode的Copy Bundle Resources

通过Creator 3.1.0构建ios,构建完了之后,发现打包资源的样子如下


项目的资源都是通过Copy Files的方式打到最终的包里面去的,生成这样的结构是由如下的脚本生成的,在native/engine/common/CMakeLists.txt

我不想通过这种方式拷贝资源到目标,原因是当项目中的资源很多的情况下,通过这种方式来拷贝资源,对ios工程进行二次开发的时候,打开一些页面会特别慢,有的时候甚至卡死
把这段代码注释上了之后,执行脚本
cmake -S /Users/stone/Documents/Test/Test310/native/engine/ios -GXcode -B/Users/stone/Documents/Test/Test310/build/ios/proj -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang -DRES_DIR="/Users/stone/Documents/Test/Test310/build/ios"
发现生成的ios工程里面去掉了Copy Files,OK,是我想要的效果,那项目运行起来需要的资源我想构建出下面的结构

现在我是手动操作的,下次构建项目的时候xcode工程被重置了,就没了
正确的实现方式应该是在CMakeLists.txt中进行配置,思路是有了,就是对cmake不熟悉,请问大侠我想实现这个功能如何修改CMakeLists.txt

应该是在native/engine/ios/CMakeLists.txt中进行修改

请大侠指点迷津

手动通过这样的方式把资源引入进来,就会把资源放到Copy Bundle Resources中,下一步研究如何通过CMakeLists.txt配置的方式把资源引入进来


https://gitlab.kitware.com/cmake/cmake/-/issues/19588
看这个贴里里面说的东西,是cmake暂时还不支持吗?

Xcode: Enable CMake to create folder references

对iOS工程进行二次开发,重新bulid会导致开发配置的内容被重置掉,所以二次开发是不是就不要再bulid到当前的ios文件夹。需要编译到新的目录,然后把另外编译好的资源文件夹assert,如文章这样引入到工程里面。还是说自己去配置cmakelists文件,游戏开发完成后重新bulid。但如果只是文件的引用还好,主要是一些工程配置cmakeList没有办法很好完成

我现在是每次都构建,然后工程里面的配置都被抹掉了,还得重新配置,想你说的,构建到另外的文件夹然后把资源拷贝过来这个方法也挺好的,3.x 有了native文件夹,ios,android中的平台相关的大部分东西都被保留下来了,其他的类似签名啥的,我印象中是可以被保留下来的,需要在什么地方配置我忘记了,我去找找,不知道你们的coreator版本是3.x,还是2.x ?

3.x版本

我想问下你们碰到Copy Bundle Resources文件太碎的问题吗

是说assets资源通过copy files引入工程吗?这个确实难受,资源一旦变化就不好搞

在ios里面修改签名,目前我找到的是在CMakeLists.txt,估计其他的xcode设置也是在这里改,具体其他设置,我不清楚,可以跟踪一下CMakeLists.txt的使用,看看Creator是怎么读取DEVELOPMENT_TEAM,然后设置xcode工程的
native/engine/common/CMakeLists.txt

也可以在cfg.cmake做统一的基础配置。但是因为项目使用了一些三分库和cocoapods,需要做一些其他的配置,好比library search 需要设置$(inherited),这些就不是那么好操作了

build目录是生成目录,不应该在build目录下修改,还是应该考虑native文件夹下面的配置
例如,native/engine/ios/CMakeLists.txt,里面包含了一些项目配置,我目前猜测
XCODE_ATTRIBUTE_DEVELOPMENT_TEAM
XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY
XCODE_ATTRIBUTE_ASSETCATALOG_COMPILER_APPICON_NAME
类似这些关键字是cmake内置的,具体可以查看一下cmake官方文档,关于生成xcode工程这块的系统提供的配置

还有个有用的点,是在creator中构建的时候打开构建调试工具

在调试工具控制台,我发现了一条信息

尝试把build/ios/proj/Test310.xcodeproj,这个工程文件删除,然后在cmd中执行如下命令

cmake -S /Users/stone/Documents/Test/Test310/native/engine/ios -GXcode -B/Users/stone/Documents/Test/Test310/build/ios/proj -DCMAKE_SYSTEM_NAME=iOS -DCMAKE_CXX_COMPILER=clang++ -DCMAKE_C_COMPILER=clang -DRES_DIR="/Users/stone/Documents/Test/Test310/build/ios"

发现工程文件被创建回来了,既然cmake命令可以创建xxx.xcodeproj,那么理论上是可以通过配置来指定xxx.xcodeproj工程的配置。

调用这个:PROPERTIES RESOURCE,如
set_target_properties({APP_NAME} PROPERTIES RESOURCE "{APP_ALL_RES}"
INFOPLIST_FILE ${APP_INFO_FILE}
ASSETCATALOG_COMPILER_APPICON_NAME “AppIcon”
)