【发布时间】:2021-08-16 02:06:30
【问题描述】:
我一直在使用 CMake 构建我的下一个 C++ 项目,我必须将一个名为“GLFW”的库链接到我的可执行文件。我对此一直有奇怪的问题:
这是我的项目结构
GLFW 被克隆到“dep”目录中。 “构建”目录是我的 CMake 构建目录。 'src' 目录是我的顶级 CMakeLists.txt 的子目录,其中包含源代码。
顶级 CMakeLists.txt:
cmake_minimum_required(VERSION 3.20.1)
set(CMAKE_CXX_STANDARD 20)
project(OpenGL1)
add_subdirectory(dep/glfw)
add_subdirectory(src)
target_link_libraries(${PROJECT_NAME} glfw)
src/CMakeLists.txt:
add_executable(${PROJECT_NAME} main.cpp)
src/main.cpp:
#include <iostream>
int main()
{
std::cout<<"Hello, world!\n";
}
我这样配置我的项目(命令从根目录运行)
cmake -G "Ninja" -S . -B build
配置运行良好,但建筑物不:
cmake --build build
这会导致一长串错误:
cmake --build build
[1/127] Building C object dep/glfw/src/CMakeFiles/glfw.dir/monitor.c.obj
FAILED: dep/glfw/src/CMakeFiles/glfw.dir/monitor.c.obj
C:\dev\LLVM\bin\clang.exe -D_GLFW_USE_CONFIG_H -D_UNICODE -I../dep/glfw/include -I../dep/glfw/src -Idep/glfw/src -g -Xclang -gcodeview -O0 -D_DEBUG -D_DLL -D_MT -Xclang --dependent-lib=msvcrtd /clang:-Wall -MD -MT dep/glfw/src/CMakeFiles/glfw.dir/monitor.c.obj -MF dep\glfw\src\CMakeFiles\glfw.dir\monitor.c.obj.d -o dep/glfw/src/CMakeFiles/glfw.dir/monitor.c.obj -c ../dep/glfw/src/monitor.c
clang: error: no such file or directory: '/clang:-Wall'
[2/127] Building C object dep/glfw/src/CMakeFiles/glfw.dir/window.c.obj
FAILED: dep/glfw/src/CMakeFiles/glfw.dir/window.c.obj
C:\dev\LLVM\bin\clang.exe -D_GLFW_USE_CONFIG_H -D_UNICODE -I../dep/glfw/include -I../dep/glfw/src -Idep/glfw/src -g -Xclang -gcodeview -O0 -D_DEBUG -D_DLL -D_MT -Xclang --dependent-lib=msvcrtd /clang:-Wall -MD -MT dep/glfw/src/CMakeFiles/glfw.dir/window.c.obj -MF dep\glfw\src\CMakeFiles\glfw.dir\window.c.obj.d -o dep/glfw/src/CMakeFiles/glfw.dir/window.c.obj -c ../dep/glfw/src/window.c
clang: error: no such file or directory: '/clang:-Wall'
[3/127] Building C object dep/glfw/src/CMakeFiles/glfw.dir/context.c.obj
FAILED: dep/glfw/src/CMakeFiles/glfw.dir/context.c.obj
C:\dev\LLVM\bin\clang.exe -D_GLFW_USE_CONFIG_H -D_UNICODE -I../dep/glfw/include -I../dep/glfw/src -Idep/glfw/src -g -Xclang -gcodeview -O0 -D_DEBUG -D_DLL -D_MT -Xclang --dependent-lib=msvcrtd /clang:-Wall -MD -MT dep/glfw/src/CMakeFiles/glfw.dir/context.c.obj -MF dep\glfw\src\CMakeFiles\glfw.dir\context.c.obj.d -o dep/glfw/src/CMakeFiles/glfw.dir/context.c.obj -c ../dep/glfw/src/context.c
clang: error: no such file or directory: '/clang:-Wall'
[4/127] Building C object dep/glfw/src/CMakeFiles/glfw.dir/init.c.obj
FAILED: dep/glfw/src/CMakeFiles/glfw.dir/init.c.obj
C:\dev\LLVM\bin\clang.exe -D_GLFW_USE_CONFIG_H -D_UNICODE -I../dep/glfw/include -I../dep/glfw/src -Idep/glfw/src -g -Xclang -gcodeview -O0 -D_DEBUG -D_DLL -D_MT -Xclang --dependent-lib=msvcrtd /clang:-Wall -MD -MT dep/glfw/src/CMakeFiles/glfw.dir/init.c.obj -MF dep\glfw\src\CMakeFiles\glfw.dir\init.c.obj.d -o dep/glfw/src/CMakeFiles/glfw.dir/init.c.obj -c ../dep/glfw/src/init.c
clang: error: no such file or directory: '/clang:-Wall'
[5/127] Building C object dep/glfw/src/CMakeFiles/glfw.dir/input.c.obj
FAILED: dep/glfw/src/CMakeFiles/glfw.dir/input.c.obj
C:\dev\LLVM\bin\clang.exe -D_GLFW_USE_CONFIG_H -D_UNICODE -I../dep/glfw/include -I../dep/glfw/src -Idep/glfw/src -g -Xclang -gcodeview -O0 -D_DEBUG -D_DLL -D_MT -Xclang --dependent-lib=msvcrtd /clang:-Wall -MD -MT dep/glfw/src/CMakeFiles/glfw.dir/input.c.obj -MF dep\glfw\src\CMakeFiles\glfw.dir\input.c.obj.d -o dep/glfw/src/CMakeFiles/glfw.dir/input.c.obj -c ../dep/glfw/src/input.c
clang: error: no such file or directory: '/clang:-Wall'
[6/127] Building C object dep/glfw/src/CMakeFiles/glfw.dir/vulkan.c.obj
FAILED: dep/glfw/src/CMakeFiles/glfw.dir/vulkan.c.obj
C:\dev\LLVM\bin\clang.exe -D_GLFW_USE_CONFIG_H -D_UNICODE -I../dep/glfw/include -I../dep/glfw/src -Idep/glfw/src -g -Xclang -gcodeview -O0 -D_DEBUG -D_DLL -D_MT -Xclang --dependent-lib=msvcrtd /clang:-Wall -MD -MT dep/glfw/src/CMakeFiles/glfw.dir/vulkan.c.obj -MF dep\glfw\src\CMakeFiles\glfw.dir\vulkan.c.obj.d -o dep/glfw/src/CMakeFiles/glfw.dir/vulkan.c.obj -c ../dep/glfw/src/vulkan.c
clang: error: no such file or directory: '/clang:-Wall'
ninja: build stopped: subcommand failed.
我不知道这是 glfw 的 CMakeLists.txt 还是我的系统的问题,但是当我从顶级 CMakeLists.txt 中删除依赖 GLFW 的函数时,没有错误。
请注意,我已经尝试使用 git 子模块,但遇到了同样的错误,所以我使用了这种方式,因为它更直接。
我在 windows 上使用 Ninja,我没有使用 git repo,该项目只是我 PC 上的一些文件。 如何解决这些错误? 提前致谢 :) 随意询问其他文件的内容 - 文件太多,无法全部放在这里。
【问题讨论】: