From ce9283951b08d7472d70366e444ed5fcebcfa1e8 Mon Sep 17 00:00:00 2001 From: wyc <1104749580@qq.com> Date: Wed, 8 Jul 2026 14:10:33 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E6=AC=A1=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + CMakeLists.txt | 24 ++++++++++++ CMakeUserPresets.json | 7 ++++ main.cmake | 5 +++ src/main.cpp | 6 +++ third_party/init.bash | 28 ++++++++++++++ third_party/init.ps1 | 37 ++++++++++++++++++ toolchain/vs2019.cmake | 88 ++++++++++++++++++++++++++++++++++++++++++ toolchain/vs2019.json | 37 ++++++++++++++++++ toolchain/vs2022.cmake | 13 +++++++ toolchain/vs2022.json | 37 ++++++++++++++++++ 11 files changed, 283 insertions(+) create mode 100644 .gitignore create mode 100644 CMakeLists.txt create mode 100644 CMakeUserPresets.json create mode 100644 main.cmake create mode 100644 src/main.cpp create mode 100644 third_party/init.bash create mode 100644 third_party/init.ps1 create mode 100644 toolchain/vs2019.cmake create mode 100644 toolchain/vs2019.json create mode 100644 toolchain/vs2022.cmake create mode 100644 toolchain/vs2022.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a09c56d --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/.idea diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..76b4cee --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,24 @@ +if (${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_CURRENT_LIST_DIR}) + cmake_minimum_required(VERSION 3.16) + cmake_policy(SET CMP0141 NEW) + set(CMAKE_MSVC_DEBUG_INFORMATION_FORMAT "$<$:Embedded>") + project(test_maplibre) + set(test_maplibre_VERSION 1.0.0) + set(CMAKE_CXX_STANDARD 20) + include(third_party/build_infra/start.cmake) + include(third_party/CPP_Core/main.cmake) + + set(ecap_rely maplibre-native-qt) + library_is_installed_with_rely(global ok ${ecap_rely}) + if (${ok}) + include(${CMAKE_SOURCE_DIR}/main.cmake) + else () + message("test_maplibre 依赖未安装! 请运行 test_maplibre_env 目标安装所需第三方依赖") + endif () + rcl_add_dependency_action_targets("test_maplibre_env" ${ecap_rely}) + include(third_party/build_infra/end.cmake) +else () +endif () + + + diff --git a/CMakeUserPresets.json b/CMakeUserPresets.json new file mode 100644 index 0000000..730e33c --- /dev/null +++ b/CMakeUserPresets.json @@ -0,0 +1,7 @@ +{ + "version": 4, + "include": [ + "toolchain/vs2022.json", + "toolchain/vs2019.json" + ] +} \ No newline at end of file diff --git a/main.cmake b/main.cmake new file mode 100644 index 0000000..0be510f --- /dev/null +++ b/main.cmake @@ -0,0 +1,5 @@ +set(dir ${CMAKE_CURRENT_LIST_DIR}/src) + + +file(GLOB_RECURSE srcs ${dir}/*.c ${dir}/*.h ${dir}/*.cpp ${dir}/*.hpp) +add_executable(test_maplibre ${srcs}) \ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp new file mode 100644 index 0000000..470a39d --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,6 @@ +#include + +int main() { + std::cout << "Hello World!" << std::endl; + return 0; +} \ No newline at end of file diff --git a/third_party/init.bash b/third_party/init.bash new file mode 100644 index 0000000..35948c1 --- /dev/null +++ b/third_party/init.bash @@ -0,0 +1,28 @@ +#!/usr/bin/env bash +set -euo pipefail +script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" +root="$(cd "$script_dir/.." && pwd)" +cd "$root" +origin="$(git remote get-url origin)" +origin="${origin%/}" +remote_root="${origin%/*}" +remote_root="${remote_root%/*}" +echo "remoteRoot $remote_root" +fetch_repo() { + local repo="$1" + local branch="$2" + local dir="$3" + if [[ -d "$dir" ]]; then + git -C "$dir" rev-parse --is-inside-work-tree >/dev/null + git -C "$dir" remote set-url origin "$repo" + git -C "$dir" fetch origin "$branch" + git -C "$dir" checkout "$branch" + git -C "$dir" pull --ff-only origin "$branch" + else + mkdir -p "$(dirname "$dir")" + git clone --branch "$branch" --single-branch "$repo" "$dir" + fi +} + +fetch_repo "$remote_root/ae/build_infra" "master" "third_party/build_infra" +fetch_repo "$remote_root/ae/CPP_Core" "master" "third_party/CPP_Core" \ No newline at end of file diff --git a/third_party/init.ps1 b/third_party/init.ps1 new file mode 100644 index 0000000..820e21b --- /dev/null +++ b/third_party/init.ps1 @@ -0,0 +1,37 @@ +$ErrorActionPreference = "Stop" +$scriptDir = $PSScriptRoot +if ( [string]::IsNullOrWhiteSpace($scriptDir)) +{ + $scriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path +} +$root = (Resolve-Path -LiteralPath (Join-Path $scriptDir "..")).Path +Set-Location -LiteralPath $root +$origin = git remote get-url origin +$origin = $origin.TrimEnd("/") +$remoteRoot = $origin -replace "/[^/]+(\.git)?$", "" +$remoteRoot = $remoteRoot -replace "/[^/]+$", "" +echo "remoteRoot $remoteRoot" + +function Fetch-Repo +{ + param( + [string]$Repo, + [string]$Branch, + [string]$Dir + ) + if (Test-Path -LiteralPath $Dir -PathType Container) + { + git -C $Dir rev-parse --is-inside-work-tree *> $null + git -C $Dir remote set-url origin $Repo + git -C $Dir fetch origin $Branch + git -C $Dir checkout $Branch + git -C $Dir pull --ff-only origin $Branch + } + else + { + git clone --branch $Branch --single-branch $Repo $Dir + } +} + +Fetch-Repo "$remoteRoot/ae/build_infra" -Branch "master" "third_party/build_infra" +Fetch-Repo "$remoteRoot/ae/CPP_Core" -Branch "master" "third_party/CPP_Core" diff --git a/toolchain/vs2019.cmake b/toolchain/vs2019.cmake new file mode 100644 index 0000000..5f9cd9f --- /dev/null +++ b/toolchain/vs2019.cmake @@ -0,0 +1,88 @@ + +#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") + +#get_filename_component(_compiler_dir "${CMAKE_CXX_COMPILER}" DIRECTORY) +# +#set(CMAKE_LINKER "${_compiler_dir}/link.bat") + + +#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() + + + diff --git a/toolchain/vs2019.json b/toolchain/vs2019.json new file mode 100644 index 0000000..7ef429c --- /dev/null +++ b/toolchain/vs2019.json @@ -0,0 +1,37 @@ +{ + "version": 10, + "cmakeMinimumRequired": { + "major": 3, + "minor": 21, + "patch": 0 + }, + "configurePresets": [ + { + "name": "vs2019", + "hidden": true, + "generator": "Ninja", + "cacheVariables": { + "CMAKE_TOOLCHAIN_FILE": "${sourceDir}/toolchain/vs2019.cmake" + }, + "vendor": { + "jetbrains.com/clion": { + "toolchain": "vs2019" + } + } + }, + { + "name": "vs2019_Debug", + "inherits": "vs2019", + "cacheVariables": { + "CMAKE_BUILD_TYPE": "Debug" + } + }, + { + "name": "vs2019_Release", + "inherits": "vs2019", + "cacheVariables": { + "CMAKE_BUILD_TYPE": "Release" + } + } + ] +} diff --git a/toolchain/vs2022.cmake b/toolchain/vs2022.cmake new file mode 100644 index 0000000..193d1b6 --- /dev/null +++ b/toolchain/vs2022.cmake @@ -0,0 +1,13 @@ + +set(dir "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Tools/MSVC/14.44.35207/bin/Hostx64/x64") + +set(CMAKE_CXX_COMPILER "${dir}/cl.bat") +set(CMAKE_C_COMPILER "${dir}/cl.bat") +set(CMAKE_LINKER "${dir}/link.bat") + +#set(CMAKE_CXX_COMPILER "${dir}/cl.exe") +#set(CMAKE_C_COMPILER "${dir}/cl.exe") +#set(CMAKE_LINKER "${dir}/link.exe") + +# [2/2] C:\Windows\system32\cmd.exe /C "cd . && "C:\Program Files\JetBrains\CLion 2025.3.4\bin\cmake\win\x64\bin\cmake.exe" -E vs_link_exe --msvc-ver=1944 --intdir=CMakeFiles\radio.dir --rc=C:\PROGRA~2\WI3CF2~1\10\bin\100261~1.0\x64\rc.exe --mt=C:\PROGRA~2\WI3CF2~1\10\bin\100261~1.0\x64\mt.exe --manifests -- C:\PROGRA~1\MICROS~1\2022\ENTERP~1\VC\Tools\MSVC\1444~1.352\bin\Hostx64\x64\LINK_2~1.BAT /nologo @CMakeFiles\radio.rsp /out:radio.exe /implib:radio.lib /pdb:radio.pdb /version:0.0 /machine:x64 /debug /INCREMENTAL /subsystem:console && cd ." + diff --git a/toolchain/vs2022.json b/toolchain/vs2022.json new file mode 100644 index 0000000..168b92f --- /dev/null +++ b/toolchain/vs2022.json @@ -0,0 +1,37 @@ +{ + "version": 10, + "cmakeMinimumRequired": { + "major": 3, + "minor": 21, + "patch": 0 + }, + "configurePresets": [ + { + "name": "vs2022", + "hidden": true, + "generator": "Ninja", + "cacheVariables": { + "CMAKE_TOOLCHAIN_FILE": "${sourceDir}/toolchain/vs2022.cmake" + }, + "vendor": { + "jetbrains.com/clion": { + "toolchain": "vs2022" + } + } + }, + { + "name": "vs2022_debug", + "inherits": "vs2022", + "cacheVariables": { + "CMAKE_BUILD_TYPE": "Debug" + } + }, + { + "name": "vs2022_release", + "inherits": "vs2022", + "cacheVariables": { + "CMAKE_BUILD_TYPE": "Release" + } + } + ] +} \ No newline at end of file