vcpkg安装ICU后,如何配置CMake实现静态链接并通过g++编译?
配置CMake静态链接ICU(vcpkg安装)
前置确认
确保已安装静态版本的ICU:
- 执行命令
vcpkg install icu:x64-windows-static(32位环境替换为x86-windows-static) - 用
vcpkg list icu确认安装状态,输出需包含icu:x64-windows-static
- 执行命令
定位ICU安装路径:
- 找到你的vcpkg根目录(默认一般是
C:\vcpkg) - ICU头文件路径:
${VCPKG_ROOT}/installed/x64-windows-static/include - ICU静态库路径:
${VCPKG_ROOT}/installed/x64-windows-static/lib(包含icuuc.lib、icuin.lib、icuio.lib、icudt.lib等文件)
- 找到你的vcpkg根目录(默认一般是
方式一:手动指定ICU路径(无需vcpkg工具链)
在项目根目录创建CMakeLists.txt,替换VCPKG_ROOT为你的实际路径:
cmake_minimum_required(VERSION 3.15) project(ICU_Static_Demo) # 设置C++标准 set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) # 手动指定ICU路径 set(VCPKG_ROOT "C:/vcpkg") set(ICU_INCLUDE_DIR "${VCPKG_ROOT}/installed/x64-windows-static/include") set(ICU_LIB_DIR "${VCPKG_ROOT}/installed/x64-windows-static/lib") # 添加头文件目录 include_directories(${ICU_INCLUDE_DIR}) # 生成可执行文件并链接静态库 add_executable(icu_demo main.cpp) target_link_libraries(icu_demo ${ICU_LIB_DIR}/icuuc.lib ${ICU_LIB_DIR}/icuin.lib ${ICU_LIB_DIR}/icuio.lib ${ICU_LIB_DIR}/icudt.lib ) # 静态链接必须定义的宏 target_compile_definitions(icu_demo PRIVATE ICU_STATIC)
编译步骤(cmd执行)
- 进入项目根目录,创建构建目录:
mkdir build && cd build - 生成构建文件(使用MinGW工具链,无需VS):
cmake -S .. -B . -G "MinGW Makefiles" - 编译项目:
cmake --build . --config Release
方式二:使用vcpkg Toolchain(更简洁)
让CMake自动识别vcpkg安装的ICU,无需手动写路径。
1. 编写CMakeLists.txt
cmake_minimum_required(VERSION 3.15) project(ICU_Static_Demo) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) # 查找ICU静态库组件 find_package(ICU REQUIRED COMPONENTS uc in io dt) add_executable(icu_demo main.cpp) # 链接ICU静态库目标 target_link_libraries(icu_demo PRIVATE ICU::uc ICU::in ICU::io ICU::dt) # 静态链接宏定义 target_compile_definitions(icu_demo PRIVATE ICU_STATIC)
2. VSCode配置(可选)
在项目的.vscode/settings.json中添加以下内容,让VSCode的CMake插件自动使用vcpkg工具链:
{ "cmake.configureSettings": { "CMAKE_TOOLCHAIN_FILE": "C:/vcpkg/scripts/buildsystems/vcpkg.cmake", "VCPKG_TARGET_TRIPLET": "x64-windows-static" } }
3. 编译步骤(cmd执行)
mkdir build && cd build cmake -S .. -B . -G "MinGW Makefiles" -DCMAKE_TOOLCHAIN_FILE=C:/vcpkg/scripts/buildsystems/vcpkg.cmake -DVCPKG_TARGET_TRIPLET=x64-windows-static cmake --build . --config Release
直接用g++编译(无需CMake)
如果不想用CMake,直接在cmd执行以下命令(替换路径为你的实际路径):
g++ main.cpp -o icu_demo.exe -IC:/vcpkg/installed/x64-windows-static/include -LC:/vcpkg/installed/x64-windows-static/lib -licuuc -licuin -licuio -licudt -DICU_STATIC
内容的提问来源于stack exchange,提问作者yes
相关产品推荐
相关产品推荐

