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
相关产品推荐
相关产品推荐

