Files
build_infra/toolchain/vs2019.cmake
T
2026-06-16 10:23:51 +08:00

86 lines
2.9 KiB
CMake

set(dir "C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Tools/MSVC/14.29.30133/bin/Hostx64/x64")
set(CMAKE_CXX_COMPILER "${dir}/cl.exe")
set(CMAKE_C_COMPILER "${dir}/cl.exe")
set(CMAKE_LINKER "${dir}/link.exe")
if(CMAKE_HOST_WIN32 AND CMAKE_GENERATOR MATCHES "Ninja")
message(STATUS "CMAKE_GENERATOR = ${CMAKE_GENERATOR}")
message(STATUS "CMAKE_GENERATOR_INSTANCE = ${CMAKE_GENERATOR_INSTANCE}")
message(STATUS "CMAKE_GENERATOR_TOOLSET = ${CMAKE_GENERATOR_TOOLSET}")
message(STATUS "CMAKE_GENERATOR_PLATFORM = ${CMAKE_GENERATOR_PLATFORM}")
message(STATUS "CMAKE_MAKE_PROGRAM before = ${CMAKE_MAKE_PROGRAM}")
file(GLOB CLION_NINJA_CANDIDATES
"C:/Program Files/JetBrains/CLion */bin/ninja/win/x64/ninja.exe"
)
list(SORT CLION_NINJA_CANDIDATES ORDER DESCENDING)
if(CLION_NINJA_CANDIDATES)
list(GET CLION_NINJA_CANDIDATES 0 CLION_NINJA_EXE)
message(STATUS "CLION_NINJA_EXE = ${CLION_NINJA_EXE}")
set(CMAKE_MAKE_PROGRAM "${CLION_NINJA_EXE}" CACHE FILEPATH "Ninja executable" FORCE)
else()
message(WARNING "CLion ninja.exe not found")
endif()
message(STATUS "CMAKE_MAKE_PROGRAM after = ${CMAKE_MAKE_PROGRAM}")
# 输出 Ninja 版本
execute_process(
COMMAND "${CMAKE_MAKE_PROGRAM}" --version
OUTPUT_VARIABLE _ninja_version
ERROR_VARIABLE _ninja_version_err
RESULT_VARIABLE _ninja_version_ret
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_STRIP_TRAILING_WHITESPACE
)
message(STATUS "Ninja version ret = ${_ninja_version_ret}")
message(STATUS "Ninja version = ${_ninja_version}")
if(_ninja_version_err)
message(STATUS "Ninja version err = ${_ninja_version_err}")
endif()
# 输出 Ninja Windows 编码模式
execute_process(
COMMAND "${CMAKE_MAKE_PROGRAM}" -t wincodepage
OUTPUT_VARIABLE _ninja_wincodepage
ERROR_VARIABLE _ninja_wincodepage_err
RESULT_VARIABLE _ninja_wincodepage_ret
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_STRIP_TRAILING_WHITESPACE
)
message(STATUS "Ninja wincodepage ret = ${_ninja_wincodepage_ret}")
message(STATUS "Ninja wincodepage = ${_ninja_wincodepage}")
if(_ninja_wincodepage_err)
message(STATUS "Ninja wincodepage err = ${_ninja_wincodepage_err}")
endif()
# 输出当前 cmd 代码页
execute_process(
COMMAND cmd /c chcp
OUTPUT_VARIABLE _cmd_chcp
ERROR_VARIABLE _cmd_chcp_err
RESULT_VARIABLE _cmd_chcp_ret
OUTPUT_STRIP_TRAILING_WHITESPACE
ERROR_STRIP_TRAILING_WHITESPACE
)
message(STATUS "cmd chcp ret = ${_cmd_chcp_ret}")
message(STATUS "cmd chcp = ${_cmd_chcp}")
if(_cmd_chcp_err)
message(STATUS "cmd chcp err = ${_cmd_chcp_err}")
endif()
endif()