本地构建工作正常时没有这样的文件或目录
Posted
技术标签:
【中文标题】本地构建工作正常时没有这样的文件或目录【英文标题】:No such file or directory while local build works fine 【发布时间】:2018-03-04 22:08:50 【问题描述】:在更改为 CMake 和 Travis CI 构建环境时,我在 Travis CI 上启用了编译。即使 CMake 项目在我的电脑上正确编译,Travis 还是以 2 退出:
In file included from /home/travis/build/Codestones/Proton/source/application.cpp:1:0:
/home/travis/build/Codestones/Proton/source/application.h:3:23: fatal error: glad\glad.h: No such file or directory
#include <glad\glad.h>
^
compilation terminated.
make[2]: *** [CMakeFiles/Proton.dir/source/application.cpp.o] Error 1
make[1]: *** [CMakeFiles/Proton.dir/all] Error 2
make: *** [all] Error 2
这是我的 CMakeLists.txt:
cmake_minimum_required(VERSION 3.1)
project(Proton)
set(CMAKE_CXX_STANDARD 11)
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
set(SRC_DIR "$CMAKE_CURRENT_SOURCE_DIR/source")
set(LIB_DIR "$CMAKE_CURRENT_SOURCE_DIR/dependencies")
# Executable definition and properties
file(GLOB SOURCES
"$SRC_DIR/*.h"
"$SRC_DIR/*.cpp"
)
add_executable(Proton "$SOURCES")
# GLFW
set(GLFW_DIR "$LIB_DIR/glfw")
set(GLFW_BUILD_EXAMPLES OFF CACHE INTERNAL "Build the GLFW example programs")
set(GLFW_BUILD_TESTS OFF CACHE INTERNAL "Build the GLFW test programs")
set(GLFW_BUILD_DOCS OFF CACHE INTERNAL "Build the GLFW documentation")
set(GLFW_INSTALL OFF CACHE INTERNAL "Generate installation target")
add_subdirectory("$GLFW_DIR")
target_link_libraries($PROJECT_NAME "glfw" "$GLFW_LIBRARIES")
target_include_directories($PROJECT_NAME PRIVATE "$GLFW_DIR/include")
target_compile_definitions($PROJECT_NAME PRIVATE "GLFW_INCLUDE_NONE")
# GLAD
set(GLAD_DIR "$LIB_DIR/glad")
add_subdirectory("$GLAD_DIR")
target_link_libraries($PROJECT_NAME "glad" "$GLAD_LIBRARIES")
target_include_directories($PROJECT_NAME PRIVATE "$PROJECT_BINARY_DIR/dependencies/glad/include")
我认为这意味着glad.h 丢失或链接不正确,但为什么它会在我的电脑上构建和运行良好?
【问题讨论】:
【参考方案1】:\
不能用作#include
指令中的路径分隔符,请使用/
。如果您的本地(Windows?)编译器能够理解它,那么它就是一个不可移植的扩展。
【讨论】:
哦,那将是一个愚蠢的错误。我现在确实在 Windows 机器上,我会试一试。【参考方案2】:gcc 支持 Windows 上包含路径中的反斜杠作为扩展
#include <glad\glad.h>
这在 linux 下不受支持,您只能在包含路径中使用正斜杠 /
#include <glad/glad.h>
【讨论】:
以上是关于本地构建工作正常时没有这样的文件或目录的主要内容,如果未能解决你的问题,请参考以下文章
无法打开流:没有这样的文件或目录,但目录存在。在本地主机上工作但不在实时站点上工作[重复]
ProcessBuilder 在 Mac 上给出“没有这样的文件或目录”,而 Runtime().exec() 工作正常