Mac平台CMake项目链接Optick时遇UTF-8无效错误求助
Mac平台Ninja编译Optick时链接阶段出现UTF-8编码错误
我有一个依赖多个第三方库的跨平台CMake项目,Windows上编译构建正常,但在Mac平台用Ninja编译时,链接Optick环节出现如下错误:
[949/972] Linking CXX shared library Engine/External/optick/libOptickCore.dylib FAILED: Engine/External/optick/libOptickCore.dylib : && /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ -x objective-c++ -arch arm64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.1.sdk -dynamiclib -Wl,-headerpad_max_install_names -o Engine/External/optick/libOptickCore.dylib -install_name @rpath/libOptickCore.dylib Engine/External/optick/CMakeFiles/OptickCore.dir/src/optick_capi.cpp.o Engine/External/optick/CMakeFiles/OptickCore.dir/src/optick_core.cpp.o Engine/External/optick/CMakeFiles/OptickCore.dir/src/optick_gpu.cpp.o Engine/External/optick/CMakeFiles/OptickCore.dir/src/optick_gpu.d3d12.cpp.o Engine/External/optick/CMakeFiles/OptickCore.dir/src/optick_gpu.vulkan.cpp.o Engine/External/optick/CMakeFiles/OptickCore.dir/src/optick_message.cpp.o Engine/External/optick/CMakeFiles/OptickCore.dir/src/optick_miniz.cpp.o Engine/External/optick/CMakeFiles/OptickCore.dir/src/optick_serialization.cpp.o Engine/External/optick/CMakeFiles/OptickCore.dir/src/optick_server.cpp.o && : Engine/External/optick/CMakeFiles/OptickCore.dir/src/optick_capi.cpp.o:1:1: error: source file is not valid UTF-8 <CF><FA><ED><FE><U+000C><U+0000><U+0000><U+0001><U+0000><U+0000><U+0000><U+0000><U+0001><U+0000><U+0000><U+0000><U+0004><U+0000><U+0000><U+0000><U+0008><U+0002><U+0000><U+0000><U+0000> <U+0000><U+0000><U+0000><U+0000><U+0000><U+0000><U+0019><U+0000><U+0000><U+0000><88><U+0001><U+0000><U+0000><U+0000><U+0000><U+0000><U+0000><U+0000><U+0000><U+0000><U+0000><U+0000><U+0000><U+0000><U+0000><U+0000><U+0000><U+0000><U+0000><U+0000><U+0000><U+0000><U+0000><U+0000><U+0000><U+0000>H ^
该错误出现在OptickCore目标生成的所有目标文件上。
CMake配置信息
项目通过CMake生成,配置过程正常:
The C compiler identification is AppleClang 14.0.0.14000029 The CXX compiler identification is AppleClang 14.0.0.14000029 Detecting C compiler ABI info Detecting C compiler ABI info - done Check for working C compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/cc - skipped Detecting C compile features Detecting C compile features - done Detecting CXX compiler ABI info Detecting CXX compiler ABI info - done Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ - skipped Detecting CXX compile features Detecting CXX compile features - done
项目配置细节
- 在CMake脚本中,通过
target_link_libraries以PUBLIC方式链接OptickCore - 将Optick的
CMakeLists.txt添加为子目录
文件编码排查
- 源码文件编码为us-ascii:
matthewloveday@192 src % file -I optick_capi.cpp optick_capi.cpp: text/x-c; charset=us-ascii
- 目标文件编码为二进制:
matthewloveday@192 src % file -I optick_capi.cpp.o optick_capi.cpp.o: application/x-mach-binary; charset=binary
从未遇到过此类错误,不知从何入手,恳请各位提供帮助!
内容的提问来源于stack exchange,提问作者Matthew Loveday
相关产品推荐
相关产品推荐

