gpt4 book ai didi

c++ - Travis CI 找不到头文件

转载 作者:搜寻专家 更新时间:2023-10-31 02:06:47 25 4
gpt4 key购买 nike

基本上我想学习 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 上构建期间,它找不到静态库的 header 。我试过使用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

你知道我做错了什么吗?

最佳答案

问题在发布后十几分钟就得到了解决。 Utility.h 文件在本地首字母大写,而 git 上的首字母为小写。在git上使用git命令将文件的首字母大写解决了:git mv include/utility.h include/Utility.h

关于c++ - Travis CI 找不到头文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49730518/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com