You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过CLion结合CMake同时构建多平台的x86和x64版本

当然可以!CLion配合CMake(毕竟CLion默认靠CMake管理项目)完全能实现你想要的一键多架构、多平台构建流程,我给你一步步拆解怎么配置:

核心思路:CMake + CLion多工具链联动

CLion的构建逻辑是基于CMake的,所以核心是在CMake里定义好不同平台、架构的编译规则,再让CLion识别这些配置,最后打包成一键构建的任务。

1. 先把各个平台的工具链配置好

这是基础,CLion需要知道每个平台用什么编译器来构建:

  • Windows(MSVC x86/x64):CLion通常会自动识别你系统里的Visual Studio工具链,你可以去File > Settings > Build, Execution, Deployment > Toolchains里确认。如果没自动检测到,手动添加一个Visual Studio类型的工具链,选好VS安装路径,再指定对应的x86或x64架构即可。
  • Linux(WSL x86/x64/ARM):在Toolchains里添加WSL类型,选择你的WSL发行版(比如Ubuntu),CLion会自动关联WSL里的gcc/g++。如果要构建ARM架构,得先在WSL里装交叉编译工具链(比如gcc-aarch64-linux-gnu),然后要么在Toolchains里新建一个基于WSL的交叉编译工具链,要么直接在CMake里用工具链文件指定交叉编译参数。
  • macOS/iOS:如果是在Mac上用CLion,直接添加Apple Clang工具链就行;iOS的话需要配置Xcode的工具链,指定iOS SDK路径,同样可以通过CMake工具链文件来统一管理。
2. 在CMakeLists.txt里统一管理多架构构建目标

为了实现一键构建,建议在CMake里把各个架构的构建任务打包成一个总目标。你可以这么做:

# 推荐把不同平台/架构的工具链配置拆成单独的.cmake文件,比如toolchains/msvc_x86.cmake
# 这里举个简单的例子,用条件判断区分架构
if(WIN32)
    if(CMAKE_SIZEOF_VOID_P EQUAL 4)
        set(TARGET_ARCH "x86")
    else()
        set(TARGET_ARCH "x64")
    endif()
elseif(UNIX AND NOT APPLE)
    if(CMAKE_C_COMPILER_TARGET STREQUAL "aarch64-linux-gnu")
        set(TARGET_ARCH "arm64")
    else()
        set(TARGET_ARCH "x64")
    endif()
endif()

# 添加你的跨平台库目标
add_library(your_cross_lib SHARED src/your_source1.c src/your_source2.cpp)

# 自定义一个总构建目标,依赖所有架构的构建任务
# 注意:每个架构要单独用一个构建目录,避免编译冲突
add_custom_target(build_all
    COMMAND ${CMAKE_COMMAND} --build ${CMAKE_SOURCE_DIR}/build_msvc_x86 --config Release
    COMMAND ${CMAKE_COMMAND} --build ${CMAKE_SOURCE_DIR}/build_msvc_x64 --config Release
    COMMAND ${CMAKE_COMMAND} --build ${CMAKE_SOURCE_DIR}/build_wsl_x64 --config Release
    COMMAND ${CMAKE_COMMAND} --build ${CMAKE_SOURCE_DIR}/build_wsl_arm64 --config Release
    COMMENT "正在构建所有平台架构版本..."
)
3. 在CLion里设置一键触发的构建任务

配置好CMake后,在CLion里把这些任务打包起来:

  1. 先为每个架构创建单独的CMake构建配置:打开Run > Edit Configurations,点击+选择CMake Application,然后在Toolchain里选对应的工具链,Build directory指定该架构的专属构建目录(比如build_msvc_x86),Target选你的库目标。
  2. 然后创建一个Compound配置:同样在Edit Configurations里点击+选择Compound,把刚才创建的各个架构的配置都加进去。以后只要点击这个Compound配置的运行按钮,CLion就会依次构建所有目标。
  3. 偷懒的话,也可以直接在CMake工具窗口里,选中所有需要构建的目标,右键点击Build,但Compound配置更适合一键触发。
4. 额外优化小技巧
  • 工具链文件分离:把每个平台/架构的工具链配置(比如交叉编译参数、SDK路径)写到单独的.cmake文件里,这样CMakeLists.txt更简洁,维护起来也方便。
  • 统一输出目录:在CMake里设置CMAKE_LIBRARY_OUTPUT_DIRECTORY,让每个架构的库文件输出到output/${TARGET_ARCH}/这样的统一目录下,后续打包或者测试都更方便。
  • 自动检测工具:用CMake的find_program命令自动检测交叉编译工具,避免硬编码路径,提升配置的兼容性。

内容的提问来源于stack exchange,提问作者Daedalus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:12:03