项目编码问题
我看了下源码 似乎项目并未用到运行时utf8编码(std::string) 仅仅只是源文件使用了 utf8编码 目前使用了/utf8来编译 并且在CmakeLists中并未导出该参数 这会导致无法正常编译 如果导出的话 会改变主项目的运行时编码
是否可以将项目源文件改为UTF8-BOM编码 或者使用/source-charset:utf-8来代替/utf8
看了下确实有这个问题,应该编译选项把 /utf-8 改成 /source-charset:utf-8 就行🤔
#140 改成 /source-charset:utf-8 了
#140 改成
/source-charset:utf-8了我刚刚 拉了代码,我的项目
然后提示 冲突了 然后切到 0.0.7 版本了
查了下 /utf-8 和 /source-charset:utf-8 应该不冲突才的啊🤔,我自己试了下没发现问题,可以发下是什么错误吗
FAILED: _deps/sw-build/CMakeFiles/sw.dir/src/ComboBox.cpp.obj
C:\PROGRA~1\MICROS~1\18\Insiders\VC\Tools\MSVC\1450~1.357\bin\Hostx64\x64\cl.exe /nologo /TP -IE:\Hunlongyu\json-viewer\out\build\x64-release\_deps\sw-src\sw\inc /DWIN32 /D_WINDOWS /EHsc /O2 /Ob2 /DNDEBUG -std:c++20 -MD /utf-8 /W3 /source-charset:utf-8 /showIncludes /Fo_deps\sw-build\CMakeFiles\sw.dir\src\ComboBox.cpp.obj /Fd_deps\sw-build\CMakeFiles\sw.dir\sw.pdb /FS -c E:\Hunlongyu\json-viewer\out\build\x64-release\_deps\sw-src\sw\src\ComboBox.cpp
E:\Hunlongyu\json-viewer\out\build\x64-release\cl : 命令行 error D8016: “/utf-8”和“/source-charset:utf-8”命令行选项不兼容
[9/99] Building CXX object _deps\sw-build\CMakeFiles\sw.dir\src\App.cpp.obj
FAILED: _deps/sw-build/CMakeFiles/sw.dir/src/App.cpp.obj
C:\PROGRA~1\MICROS~1\18\Insiders\VC\Tools\MSVC\1450~1.357\bin\Hostx64\x64\cl.exe /nologo /TP -IE:\Hunlongyu\json-viewer\out\build\x64-release\_deps\sw-src\sw\inc /DWIN32 /D_WINDOWS /EHsc /O2 /Ob2 /DNDEBUG -std:c++20 -MD /utf-8 /W3 /source-charset:utf-8 /showIncludes /Fo_deps\sw-build\CMakeFiles\sw.dir\src\App.cpp.obj /Fd_deps\sw-build\CMakeFiles\sw.dir\sw.pdb /FS -c E:\Hunlongyu\json-viewer\out\build\x64-release\_deps\sw-src\sw\src\App.cpp
E:\Hunlongyu\json-viewer\out\build\x64-release\cl : 命令行 error D8016: “/utf-8”和“/source-charset:utf-8”命令行选项不兼容
[10/99] Building CXX object _deps\sw-build\CMakeFiles\sw.dir\src\ColorDialog.cpp.obj
FAILED: _deps/sw-build/CMakeFiles/sw.dir/src/ColorDialog.cpp.obj
C:\PROGRA~1\MICROS~1\18\Insiders\VC\Tools\MSVC\1450~1.357\bin\Hostx64\x64\cl.exe /nologo /TP -IE:\Hunlongyu\json-viewer\out\build\x64-release\_deps\sw-src\sw\inc /DWIN32 /D_WINDOWS /EHsc /O2 /Ob2 /DNDEBUG -std:c++20 -MD /utf-8 /W3 /source-charset:utf-8 /showIncludes /Fo_deps\sw-build\CMakeFiles\sw.dir\src\ColorDialog.cpp.obj /Fd_deps\sw-build\CMakeFiles\sw.dir\sw.pdb /FS -c E:\Hunlongyu\json-viewer\out\build\x64-release\_deps\sw-src\sw\src\ColorDialog.cpp
E:\Hunlongyu\json-viewer\out\build\x64-release\cl : 命令行 error D8016: “/utf-8”和“/source-charset:utf-8”命令行选项不兼容
[11/99] Building CXX object _deps\sw-build\CMakeFiles\sw.dir\src\Color.cpp.obj
FAILED: _deps/sw-build/CMakeFiles/sw.dir/src/Color.cpp.obj
C:\PROGRA~1\MICROS~1\18\Insiders\VC\Tools\MSVC\1450~1.357\bin\Hostx64\x64\cl.exe /nologo /TP -IE:\Hunlongyu\json-viewer\out\build\x64-release\_deps\sw-src\sw\inc /DWIN32 /D_WINDOWS /EHsc /O2 /Ob2 /DNDEBUG -std:c++20 -MD /utf-8 /W3 /source-charset:utf-8 /showIncludes /Fo_deps\sw-build\CMakeFiles\sw.dir\src\Color.cpp.obj /Fd_deps\sw-build\CMakeFiles\sw.dir\sw.pdb /FS -c E:\Hunlongyu\json-viewer\out\build\x64-release\_deps\sw-src\sw\src\Color.cpp
E:\Hunlongyu\json-viewer\out\build\x64-release\cl : 命令行 error D8016: “/utf-8”和“/source-charset:utf-8”命令行选项不兼容
[12/99] Building CXX object _deps\sw-build\CMakeFiles\sw.dir\src\Animation.cpp.obj
FAILED: _deps/sw-build/CMakeFiles/sw.dir/src/Animation.cpp.obj
C:\PROGRA~1\MICROS~1\18\Insiders\VC\Tools\MSVC\1450~1.357\bin\Hostx64\x64\cl.exe /nologo /TP -IE:\Hunlongyu\json-viewer\out\build\x64-release\_deps\sw-src\sw\inc /DWIN32 /D_WINDOWS /EHsc /O2 /Ob2 /DNDEBUG -std:c++20 -MD /utf-8 /W3 /source-charset:utf-8 /showIncludes /Fo_deps\sw-build\CMakeFiles\sw.dir\src\Animation.cpp.obj /Fd_deps\sw-build\CMakeFiles\sw.dir\sw.pdb /FS -c E:\Hunlongyu\json-viewer\out\build\x64-release\_deps\sw-src\sw\src\Animation.cpp
E:\Hunlongyu\json-viewer\out\build\x64-release\cl : 命令行 error D8016: “/utf-8”和“/source-charset:utf-8”命令行选项不兼容
[13/99] Building CXX object _deps\sw-build\CMakeFiles\sw.dir\src\CommandLink.cpp.obj
FAILED: _deps/sw-build/CMakeFiles/sw.dir/src/CommandLink.cpp.obj
C:\PROGRA~1\MICROS~1\18\Insiders\VC\Tools\MSVC\1450~1.357\bin\Hostx64\x64\cl.exe /nologo /TP -IE:\Hunlongyu\json-viewer\out\build\x64-release\_deps\sw-src\sw\inc /DWIN32 /D_WINDOWS /EHsc /O2 /Ob2 /DNDEBUG -std:c++20 -MD /utf-8 /W3 /source-charset:utf-8 /showIncludes /Fo_deps\sw-build\CMakeFiles\sw.dir\src\CommandLink.cpp.obj /Fd_deps\sw-build\CMakeFiles\sw.dir\sw.pdb /FS -c E:\Hunlongyu\json-viewer\out\build\x64-release\_deps\sw-src\sw\src\CommandLink.cpp
E:\Hunlongyu\json-viewer\out\build\x64-release\cl : 命令行 error D8016: “/utf-8”和“/source-charset:utf-8”命令行选项不兼容
[14/99] Building CXX object _deps\sw-build\CMakeFiles\sw.dir\src\ContextMenu.cpp.obj
FAILED: _deps/sw-build/CMakeFiles/sw.dir/src/ContextMenu.cpp.obj
C:\PROGRA~1\MICROS~1\18\Insiders\VC\Tools\MSVC\1450~1.357\bin\Hostx64\x64\cl.exe /nologo /TP -IE:\Hunlongyu\json-viewer\out\build\x64-release\_deps\sw-src\sw\inc /DWIN32 /D_WINDOWS /EHsc /O2 /Ob2 /DNDEBUG -std:c++20 -MD /utf-8 /W3 /source-charset:utf-8 /showIncludes /Fo_deps\sw-build\CMakeFiles\sw.dir\src\ContextMenu.cpp.obj /Fd_deps\sw-build\CMakeFiles\sw.dir\sw.pdb /FS -c E:\Hunlongyu\json-viewer\out\build\x64-release\_deps\sw-src\sw\src\ContextMenu.cpp
E:\Hunlongyu\json-viewer\out\build\x64-release\cl : 命令行 error D8016: “/utf-8”和“/source-charset:utf-8”命令行选项不兼容
[15/99] Building CXX object _deps\sw-build\CMakeFiles\sw.dir\src\Control.cpp.obj
FAILED: _deps/sw-build/CMakeFiles/sw.dir/src/Control.cpp.obj
C:\PROGRA~1\MICROS~1\18\Insiders\VC\Tools\MSVC\1450~1.357\bin\Hostx64\x64\cl.exe /nologo /TP -IE:\Hunlongyu\json-viewer\out\build\x64-release\_deps\sw-src\sw\inc /DWIN32 /D_WINDOWS /EHsc /O2 /Ob2 /DNDEBUG -std:c++20 -MD /utf-8 /W3 /source-charset:utf-8 /showIncludes /Fo_deps\sw-build\CMakeFiles\sw.dir\src\Control.cpp.obj /Fd_deps\sw-build\CMakeFiles\sw.dir\sw.pdb /FS -c E:\Hunlongyu\json-viewer\out\build\x64-release\_deps\sw-src\sw\src\Control.cpp
E:\Hunlongyu\json-viewer\out\build\x64-release\cl : 命令行 error D8016: “/utf-8”和“/source-charset:utf-8”命令行选项不兼容
[16/99] Building CXX object _deps\sw-build\CMakeFiles\sw.dir\src\Cursor.cpp.obj
FAILED: _deps/sw-build/CMakeFiles/sw.dir/src/Cursor.cpp.obj
C:\PROGRA~1\MICROS~1\18\Insiders\VC\Tools\MSVC\1450~1.357\bin\Hostx64\x64\cl.exe /nologo /TP -IE:\Hunlongyu\json-viewer\out\build\x64-release\_deps\sw-src\sw\inc /DWIN32 /D_WINDOWS /EHsc /O2 /Ob2 /DNDEBUG -std:c++20 -MD /utf-8 /W3 /source-charset:utf-8 /showIncludes /Fo_deps\sw-build\CMakeFiles\sw.dir\src\Cursor.cpp.obj /Fd_deps\sw-build\CMakeFiles\sw.dir\sw.pdb /FS -c E:\Hunlongyu\json-viewer\out\build\x64-release\_deps\sw-src\sw\src\Cursor.cpp
E:\Hunlongyu\json-viewer\out\build\x64-release\cl : 命令行 error D8016: “/utf-8”和“/source-charset:utf-8”命令行选项不兼容
[17/99] Scanning E:\Hunlongyu\json-viewer\src\views\viewer.cpp for CXX dependencies
[18/99] Scanning E:\Hunlongyu\json-viewer\src\main.cpp for CXX dependencies
ninja: build stopped: subcommand failed.
生成 失败。
cmake_minimum_required(VERSION 3.28)
project(json_viewer LANGUAGES CXX)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
if (MSVC)
add_compile_options("/utf-8")
endif()
include(FetchContent)
FetchContent_Declare(
sw
GIT_REPOSITORY https://github.com/Mzying2001/sw
GIT_TAG main
SOURCE_SUBDIR sw
GIT_SHALLOW TRUE
)
FetchContent_MakeAvailable(sw)
FetchContent_Declare(
simdjson
GIT_REPOSITORY https://github.com/simdjson/simdjson
GIT_TAG v4.1.0
GIT_SHALLOW TRUE
)
FetchContent_MakeAvailable(simdjson)
set(Files
"src/main.cpp"
"src/views/viewer.cpp"
"assets/resource.rc"
)
enable_language(RC)
set(CMAKE_RC_COMPILER_INIT windres)
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
add_executable(${PROJECT_NAME} ${Files})
else()
add_executable(${PROJECT_NAME} WIN32 ${Files})
endif()
target_include_directories(${PROJECT_NAME} PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}/assets
)
target_link_libraries(${PROJECT_NAME} PRIVATE
sw
simdjson
)
add_compile_options("/utf-8") 是全局的,对应选项也被加到子项目里所以冲突了,把这句放到 FetchContent_MakeAvailable 后面就没问题了; #141 也解决了这个问题。
然后提示 冲突了 然后切到 0.0.7 版本了