- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我一直在努力遵循供应商的教程:CMake-Tutorial ,查看此处的文档:Cmake-Documentation , 并尽可能地利用 YouTube 上的资源进行 self 教育,但我真的很难为使用 OpenGL 设置环境。在修改了 Glitter 样板文件以及 open.gl 和 learnopengl.com 上的教程之后,我决定了解构建过程非常重要,不能不进行调查。
在我的调查中,我遇到了 CMake 错误“找不到源文件”,详情如下所示。问题似乎是由“add_executable”引起的。
此处提出了类似的问题:CMake - Cannot find file .解决方案涉及确保为每个变量正确设置 ${PROJECT_SOURCE_DIR},我相信我已经做到了。
我的文件结构:
+ infuriating_project
+ bin // post compile results
+ src // my humble code
+ deps // external code
+glew
+ include
+ src
+glfw
+ include
+ src
+glm
+soil
+ lib
+ src
我的 CMakeLists.txt:
cmake_minimum_required (VERSION 3.0)
# Version Information ---------------------------------------------------------
project (openGL-practice)
SET (VERSION_MAJOR 1)
SET (VERSION_MINOR 0)
SET (VERSION_FEATURE 0)
SET (VERSION_PATCH 0)
SET (VERSION "${VERSION_MAJOR}.${VERSION_MINOR}")
SET (VERSION "${VERSION}.${VERSION_FEATURE}.${VERSION_PATCH}")
MESSAGE ("Version: ${VERSION}")
# Configure Source & Binary Directories ---------------------------------------
SET (PROJECT_ROOT "${PROJECT_SOURCE_DIR}")
SET (PROJECT_SOURCE_DIR "${PROJECT_SOURCE_DIR}/src")
SET (PROJECT_BINARY_DIR "${PROJECT_BINARY_DIR}/bin")
MESSAGE ("Source path: ${PROJECT_SOURCE_DIR}")
MESSAGE ("Binary path: ${PROJECT_BINARY_DIR}")
# Configure Depenency Directories ---------------------------------------------
SET (PROJECT_DEPS "${PROJECT_ROOT}/deps")
SET (glew_inc "${PROJECT_DEPS}/glew/include/GL/")
SET (glew_src "${PROJECT_DEPS}/glew/src/")
SET (glfw_inc "${PROJECT_DEPS}/glfw/include/GLFW/")
SET (glfw_src "${PROJECT_DEPS}/glfw/src/")
SET (glm "${PROJECT_DEPS}/glm/glm/")
SET (soil_lib "${PROJECT_DEPS}/lib/")
SET (soil_src "${PROJECT_DEPS}/src/")
# Include directories ---------------------------------------------------------
include_directories("
${PROJECT_SOURCE_DIR}
${PROJECT_BINARY_DIR}
${glew_inc}
${glew_src}
${glfw_inc}
${glfw_src}
${glm}
${soil_lib}
${soil_src}
${PROJECT_ROOT}
")
# Add executable --------------------------------------------------------------
add_executable(main main.cpp)
提供了以下错误:
CMake Error at CMakeLists.txt:46 (add_executable):
Cannot find source file:
main.cpp
Tried extensions .c .C .c++ .cc .cpp .cxx .m .M .mm .h .hh .h++ .hm .hpp
.hxx .in .txx
CMake Error: CMake can not determine linker language for target: main
CMake Error: Cannot determine link language for target "main".
我们将不胜感激任何帮助。
最佳答案
有几点我想提一下。
include_directories
有助于查找头文件。源文件必须始终具有完整的相对路径。
假设您的 main.cpp 在 src 中,正确的语法是
add_executable(main ${PROJECT_SOURCE_DIR}/main.cpp)
包含 ${PROJECT_BINARY_DIR}
没有意义。
覆盖 CMake 默认变量,如 ${PROJECT_SOURCE_DIR}
不是好的做法。以后你会永远记得你做过这样的事,对于另一个程序员来说,这是很意外的。
希望对您有所帮助。
关于c++ - CMake 找不到源文件(add_executable),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43400453/
我正在使用标准命令构建一个可执行文件: add_executable(MyExe a.c b.c) 我正在调整 CMAKE_EXE_LINKER_FLAGS发出一个 map 文件,它的工作原理。 但是
这个问题在这里已经有了答案: CMake - add_executable called with incorrect number of arguments (3 个答案) 关闭 3 年前。 我正
我一直在努力遵循供应商的教程:CMake-Tutorial ,查看此处的文档:Cmake-Documentation , 并尽可能地利用 YouTube 上的资源进行 self 教育,但我真的很难为使
我有以下 CMakeLists.txt 文件: CMAKE_MINIMUM_REQUIRED(VERSION 3.1) PROJECT(MyProject) FILE(GLOB_RECURSE sou
这个问题在这里已经有了答案: How do I make CMake output into a 'bin' dir? (9 个回答) 关闭1 年前。 我正在进行大量测试以验证每个库是否正确链接,然
我正在尝试组织一个开始有很多文件的 C++ 项目。我想创建两个使用 Cmake 共享一些源文件的可执行文件。我在这里发现了一个有趣的过程: How to add source files in ano
我是 CMake 的新手,我在使用 CMake 创建可执行文件时遇到问题。我正在尝试从单个 CMakeLists.txt 文件构建可执行文件和共享库。我的CMakeLists.txt如下: cmake
我想构建我的应用程序,使 Debug模式是控制台应用程序, Release模式是 Win32 应用程序。根据 documentation 我需要将 WIN32 添加到 add_executable 取
比如我在src目录下有很多源文件。我怎样才能做类似 add_executable(ex src/*.cpp) 的事情? 最佳答案 这可以使用 file manipulation command 来实现
我有一个使用 CMake 作为构建工具的项目,并为我和我的同事制作了一个简单的模板。当我在网上搜索最佳且易于使用的实践时,我遇到了创建库的不同方法。 在这个模板中,我在两个单独的变量中列出了头文件和源
我在这个网站上阅读了一堆关于 CMake 中 add_executable 函数用法的问题,但没有找到我困惑的确切答案。 我的问题是为什么我们在add_executable函数中只添加.cpp文件而不
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 关闭 3 年前。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。
我正在学习 CMake,但有点吃力。我的“项目”正在使用以一个 .cpp 文件和两个 .h 文件的形式提供的 JsonCpp“库”。结构如下所示: myProject build/ j
我们使用 CMake 和普通的 Unix 生成文件进行构建。有一些静态分析检查,例如Cppcheck ,我们在项目中的每个 C/C++ 文件中运行以在编译时捕获错误。 我为 cppcheck 创建了一
我是一名优秀的程序员,十分优秀!