gpt4 book ai didi

c - 让编译器找到 Cmake 创建的文件

转载 作者:行者123 更新时间:2023-12-01 06:16:06 25 4
gpt4 key购买 nike

我在 Cmake 中使用 configure_file 命令进行功能可用性检查,如 on this page 所述.该页面建议使用这样的命令:

configure_file(config.h.in config.h)

这会将 ${CMAKE_CURRENT_SOURCE_DIR}/config.h.in 转换为 ${CMAKE_CURRENT_BINARY_DIR}/config.h。但是当我编译我的程序时,编译器只在 ${CMAKE_CURRENT_SOURCE_DIR} 中查找 header (例如 config.h),而不是在 ${CMAKE_CURRENT_BINARY_DIR} 中查找。因此,很自然地,编译器找不到 config.h 的生成位置,因此构建失败。

解决此问题的标准方法是什么?我应该更改 CMakeLists.txt 以便在源目录中创建 config.h 吗?或者我应该更改它以将构建目录添加到包含路径吗? (真的,为什么我必须手动处理这个?[半反问])

This question涉及类似的问题,但建议将两种选择作为可能的解决方案;我想知道是否有标准做法,或者这是否表明我遗漏了有关如何使用 Cmake 的信息。

最佳答案

保持你的源代码树“原始”是正确的,而不这样做是“错误的”,例如,如果你想做多个不同的构建,或者你希望能够通过 rm'ing 构建来清理构建目录(如果您正在向源目录生成内容,则还不够)。

在构建目录中生成它并添加包含路径。

设置变量

set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE ON)

使每个源目录的相应构建目录自动添加,并使其成为其他目标使用的传递行为(这样 foo 就不必添加 的构建目录code>bar 明确的例子)。

http://www.cmake.org/cmake/help/v3.0/manual/cmake-buildsystem.7.html#build-specification-and-usage-requirements

关于c - 让编译器找到 Cmake 创建的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26029679/

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