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

Travis CI无法找到头文件问题求助

CMake+GTest项目的跨平台CI部署实践

我最近一直在折腾CMake和Google Test(GTest),同时想上手试试持续集成(CI)工具,于是就把自己的一个简单项目部署到了Travis CI和AppVeyor上,这里分享下目前的进展和项目细节:

项目编译情况

  • 本地机器上用VS 2017和g++都测试过编译,不过暂时没记清楚这两个编译器的具体版本,反正核心功能都能正常跑起来
  • AppVeyor上编译完全顺畅,没遇到什么坑
  • Travis CI的配置也基本跑通了,后续还会再优化细节

项目结构

我的项目主要分成三个核心部分:

  • 一组头文件和源文件,最终会编译成静态库,这是项目的核心逻辑载体
  • 一个独立的可执行文件,用来手动测试静态库的功能,方便本地快速验证核心逻辑
  • 已经集成了GTest模块,但目前还只是个空模板,还没来得及写具体的测试用例,后续会逐步补上

关键配置片段

CMake静态库配置

# 定义静态库目标
add_library(core_lib STATIC 
    src/core/utils.cpp
    src/core/calculator.cpp
)

# 对外暴露头文件目录,方便其他目标调用
target_include_directories(core_lib PUBLIC include/core/)

手动测试可执行文件配置

add_executable(manual_tester 
    src/test/manual_test.cpp
)

# 链接核心静态库
target_link_libraries(manual_tester PRIVATE core_lib)

GTest模板配置

include(FetchContent)
FetchContent_Declare(
  googletest
  URL https://github.com/google/googletest/archive/refs/tags/v1.14.0.zip
)

# 避免把GTest安装到系统目录,仅用于当前项目
set(INSTALL_GTEST OFF CACHE BOOL "" FORCE)
FetchContent_MakeAvailable(googletest)

# 测试可执行文件模板
add_executable(unit_tests 
    tests/unit/test_template.cpp
)

# 链接核心库和GTest主程序框架
target_link_libraries(unit_tests PRIVATE core_lib gtest_main)

AppVeyor配置(appveyor.yml)

image: Visual Studio 2017
build_script:
  - mkdir build
  - cd build
  - cmake .. -G "Visual Studio 15 2017"
  - cmake --build . --config Release

Travis CI配置(.travis.yml)

language: cpp
compiler: gcc
script:
  - mkdir build
  - cd build
  - cmake ..
  - make

目前这个项目还在完善中,后续会补充完整的GTest测试用例,也会继续优化CI配置,确保跨平台编译的稳定性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:11:47