我们正在使用cMake作为创建Xcode项目的工具来开发我们的OSX项目。
然而,事实证明我们现在需要一些本地化,我们需要英语和德语.xib文件(或.strings来生成它们,这不是重要的一点)。
我们将文件放在正确的位置并正确创建,但是当cMake生成项目时,文件将作为两个完全独立且独立的文件插入到Xcode项目中,例如:
Foo.xib Foo.xib
而不是两个"子文件"同名:
Foo.xib - Foo.xib(英文) - Foo.xib(德语)
如果我将en.lproj和sv.lproj中的xib直接拖放到项目资源管理器中的resources文件夹中: Xcode会自动检测到这是同一UI的某些不同语言,因此语言会自动添加到项目设置中。 此外,xibs还在项目资源管理器中获得了一个MainMenu.xib组,包括两种语言。
我尝试通过cmake将本地化的xib添加到项目中。它们被添加到资源文件夹但不是标识的本地化,我只在项目资源管理器中获得两个xib三个没有本地化它们之间没有连接。
如何通过cmake生成使本地化工作?
set(CEFCLIENT_RESOURCES_MAC_ENGLISH_LPROJ_SRCS_MACOSX
mac/en.lproj/MainMenu.xib
)
set(CEFCLIENT_RESOURCES_MAC_SWEDISH_LPROJ_SRCS_MACOSX
mac/sv.lproj/MainMenu.xib
)
set(CEFCLIENT_RESOURCES_SRCS
${CEFCLIENT_RESOURCES_MAC_SRCS}
${CEFCLIENT_RESOURCES_MAC_ENGLISH_LPROJ_SRCS}
${CEFCLIENT_RESOURCES_MAC_SWEDISH_LPROJ_SRCS}
${CEFCLIENT_RESOURCES_RES_SRCS}
)
有没有办法通过cmake生成Xcode项目,并且.lproj包有效?
答案 0 :(得分:2)
我们自己就是这么做的。不幸的是,解决方案并不漂亮。我最终使用mod_pbxproj编写自己的python脚本,在cmake生成后修改xcode项目。如果您可以使用常规xcode项目而不是生成cmake项目,我认为您会更好。你要做的就是让XCode将一组文件识别为本地化非常复杂。
答案 1 :(得分:0)
您可以在此处找到处理 Xcode 项目的 xib
文件的示例:https://github.com/open-eid/updater/blob/master/CMakeLists.txt。
总结:可以在结果 MACOSX_PACKAGE_LOCATION
上使用自定义命令 + 设置 nib
属性:
add_custom_command( OUTPUT MainMenu.nib
COMMAND ibtool --errors --warnings --notices --output-format human-readable-text
--compile MainMenu.nib ${CMAKE_CURRENT_SOURCE_DIR}/mac/en.lproj/MainMenu.xib
)
set_source_files_properties( MainMenu.nib
PROPERTIES MACOSX_PACKAGE_LOCATION Resources/en.lproj )