为什么cmake会出现这种情况
Why is this happening with cmake
我正在处理一个c++项目,我使用cmake作为构建系统,所以我在这里的工作流程是对代码进行更改。然后,
rm -r build
mkdir build
cd build
cmake -G "Unix Makefiles" ..
make
现在我添加了glew作为项目的依赖项,所以每当我尝试运行make
时,我都会收到一个错误,说SDL.h not found(this was working before)
。过了一段时间,我决定检查CMakeCache.txt
。使用vim
打开它,然后使用:wq
。这就是我现在所做的全部。如果我运行make
,我的项目正在成功构建,我不确定为什么会发生这种情况,有人能告诉我为什么吗?
ps:添加了此事件的gif,请查看以获得清晰的图片
(我正在处理的代码也被链接,这个确切的问题在这个提交中"dd4452b45c733e0612bc5f3c632e9d1a08be8072")
链接到gif
链接到代码
变量仅限于它们所在目录及其子目录的范围。
这样,在gamelib子目录中调用find_module()不会在主目录中找到要使用的模块。
传播include目录依赖关系的首选方式是将它们添加到目标(在gamelib目录中),如下所示:
target_include_directories(gamelib BEFORE PRIVATE
$<BUILD_INTERFACE:${SDL2_INCLUDE_DIR}>
$<BUILD_INTERFACE:${GLEW_INCLUDE_DIR}>
)
target_include_directories(gamelib SYSTEM BEFORE PUBLIC
$<BUILD_INTERFACE:${SDL2_INCLUDE_DIR}>
$<BUILD_INTERFACE:${GLEW_INCLUDE_DIR}>
)
那么您甚至不需要在任何使用gamelib的可执行文件中提及它们。
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- CMake-按正确顺序将项目与C运行时对象文件链接
- 使用CMake创建QML插件
- 在没有太多条件句的情况下,我如何避免被零除
- CMake:默认情况下,如何使add_custom_command输出保持最新?
- 我应该如何在没有变量的情况下将相同的参数传递给 CMAKE 中的多个目标?
- 如何在不更改CMakeLists.txt的情况下(可能通过CLI)将CFLAGS和CXXFLAGS传递给cmake
- 通过CMake在没有Qt Creator的情况下构建Qt5 Quick项目
- 如何在不安装的情况下将opencv源文件作为cmake依赖项包括在内
- 如何在没有外部脚本的情况下链接CMake和SQLite
- 默认情况下在CMAKE中进行优化
- 如何在没有无限循环的情况下使用 CMake 的add_subdirectory
- 在不使用CMake的情况下包含库
- 如何在没有调试符号和优化的情况下创建 cmake 构建配置
- 在某些情况下,CMake 找不到 Boost 的可能原因
- cmake:您在没有任何源文件的情况下调用了库 cryptopp 的ADD_LIBRARY
- 如何强制 cmake 在没有完整路径的情况下使用 cl.exe
- 如何在没有CMake的情况下用visual studio编译opencv
- 为什么cmake会出现这种情况