sw icon indicating copy to clipboard operation
sw copied to clipboard

项目编码问题

Open ChrisCatCP opened this issue 1 month ago • 6 comments

我看了下源码 似乎项目并未用到运行时utf8编码(std::string) 仅仅只是源文件使用了 utf8编码 目前使用了/utf8来编译 并且在CmakeLists中并未导出该参数 这会导致无法正常编译 如果导出的话 会改变主项目的运行时编码

是否可以将项目源文件改为UTF8-BOM编码 或者使用/source-charset:utf-8来代替/utf8

ChrisCatCP avatar Nov 01 '25 04:11 ChrisCatCP

看了下确实有这个问题,应该编译选项把 /utf-8 改成 /source-charset:utf-8 就行🤔

Mzying2001 avatar Nov 01 '25 04:11 Mzying2001

#140 改成 /source-charset:utf-8

Mzying2001 avatar Nov 01 '25 05:11 Mzying2001

#140 改成 /source-charset:utf-8

我刚刚 拉了代码,我的项目

Image 然后提示 冲突了 然后切到 0.0.7 版本了

Hunlongyu avatar Nov 01 '25 06:11 Hunlongyu

#140 改成 /source-charset:utf-8

我刚刚 拉了代码,我的项目

Image 然后提示 冲突了 然后切到 0.0.7 版本了

查了下 /utf-8/source-charset:utf-8 应该不冲突才的啊🤔,我自己试了下没发现问题,可以发下是什么错误吗

Mzying2001 avatar Nov 01 '25 06:11 Mzying2001

Image

  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
)

Hunlongyu avatar Nov 01 '25 10:11 Hunlongyu

add_compile_options("/utf-8") 是全局的,对应选项也被加到子项目里所以冲突了,把这句放到 FetchContent_MakeAvailable 后面就没问题了; #141 也解决了这个问题。

Mzying2001 avatar Nov 01 '25 12:11 Mzying2001