代码之家  ›  专栏  ›  技术社区  ›  Dawid Wdowiak tadman

Travis CI找不到头文件

  •  2
  • Dawid Wdowiak tadman  · 技术社区  · 7 年前

    基本上我想学习CMake和GTest。除此之外,我还想尝试CI,并将我的简单项目添加到Travis CI和AppVeyor中。该项目在我的本地机器(使用vs 2017和g++进行了测试,但不确定版本,因为我目前不在附近)以及AppVeyor上编译得很好。

    该项目由几个编译到静态库的头文件、用于“手动测试”静态库和gtest的可执行文件(目前没有测试,只是一个模板)组成。 结构如下所示:

    .
    +-- .appveyor.yml
    +-- .travis.yml
    +-- CMakeLists.txt
    +-- main
    |   +-- main.cpp [The manual testing exec]
    |   +-- CMakeLists.txt
    +-- include
    |   +-- Utility.h
    |   +-- CMakeLists.txt
    |   +-- Other header files to compile to static library
    +-- test
    |   +-- CMakeLists.txt
    |   +-- CMakeLists.txt.in
    |   +-- testutility
    |   |   +-- main.cpp [sample exe file for gtest, not used yet]
    |   |   +-- CMakeLists.txt 
    

    在Travis CI上构建期间,它找不到静态库的标头。 我试过使用 include_directories(".") 在主要CMakeLists上。

    主要CMakeLists。txt文件

    cmake_minimum_required (VERSION 3.1)
    project (primlibrary)
    
    enable_testing()
    
    include_directories(".")
    
    add_subdirectory(include)
    add_subdirectory(main)
    add_subdirectory(test)
    

    Travis CI错误消息

    CMake Error at include/CMakeLists.txt:12 (add_library):
      Cannot find source file:
        Utility.h
      Tried extensions .c .C .c++ .cc .cpp .cxx .m .M .mm .h .hh .h++ .hm .hpp
      .hxx .in .txx
    -- Generating done
    -- Build files have been written to: /home/travis/build/SoIAS/PrimLibrary/build
    The command "cmake .." exited with 1.
    $ make
    Scanning dependencies of target prim_library
    [  9%] Linking CXX static library libprim_library.a
    [  9%] Built target prim_library
    Scanning dependencies of target manualtestingapp
    [ 18%] Building CXX object main/CMakeFiles/manualtestingapp.dir/main.cpp.o
    /home/travis/build/SoIAS/PrimLibrary/main/main.cpp:2:29: fatal error: include/Utility.h: No such file or directory
     #include "include/Utility.h"
    

    并包括/CMakeLists。txt文件:

    set(CMAKE_CXX_STANDARD 14) 
    set(CMAKE_CXX_STANDARD_REQUIRED ON) 
    set(CMAKE_CXX_EXTENSIONS OFF) 
    
    set(prim_library_srcs  
      ForwardList.h 
      LinkedList.h 
      Utility.h 
      tempfix.cpp 
    ) 
    
    add_library(prim_library STATIC ${prim_library_srcs}) 
    set_target_properties(prim_library PROPERTIES LINKER_LANGUAGE CXX) 
    
    target_include_directories(prim_library PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
    

    CI和git链接: - Travis CI last build - Appveyor build - Github

    你知道我做错了什么吗?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Dawid Wdowiak tadman    6 年前

    发帖后十几分钟,问题就迎刃而解了。实用程序。本地的h文件将第一个字母大写,而git上的是小写。通过使用git命令将git上文件的第一个字母大写,可以解决此问题: git mv include/utility.h include/Utility.h