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

2024-03-07

我正在使用configure_file按描述在功能可用性检查中使用 Cmake 命令在本页 http://www.cmake.org/Wiki/CMake:How_To_Write_Platform_Checks。该页面建议使用如下命令:

configure_file(config.h.in config.h)

这将翻译${CMAKE_CURRENT_SOURCE_DIR}/config.h.in to ${CMAKE_CURRENT_BINARY_DIR}/config.h。但是当我编译程序时,编译器只查找${CMAKE_CURRENT_SOURCE_DIR}对于标题(例如config.h),不在${CMAKE_CURRENT_BINARY_DIR}。所以很自然地,编译器找不到config.h它在哪里生成,并且构建失败。

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

这个问题 https://stackoverflow.com/questions/4225005/how-to-generate-a-header-in-source-with-cmake涉及类似的问题,但建议将这两种选择作为可能的解决方案;我想知道是否有标准实践,或者这是否表明我遗漏了有关如何使用 Cmake 的信息。


保持源代码树“原始”是正确的,如果您想要执行多个不同的构建,或者如果您希望能够通过 rm'ing 构建目录(而不是如果您要向源目录生成内容就足够了)。

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

设置变量

set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_INCLUDE_CURRENT_DIR_IN_INTERFACE ON)

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

让编译器找到 Cmake 创建的文件 的相关文章

随机推荐