我使用CMake构建一个C项目。具体来说,我使用以下行:
textField.textProperty().bind(someDoubleProperty, new NumberStringConverter());
只要我在源目录中构建,这就可以正常工作。但是,如果我在其他地方构建,则configure_file(config.h.in config.h @ONLY)
文件在config.h
而不是在源目录中创建 - 并且这不是包含路径的一部分。我怎么能有CMake ......
答案 0 :(得分:3)
在CMake中包含CMAKE_INCLUDE_CURRENT_DIR
的目录是自动的:
set(CMAKE_INCLUDE_CURRENT_DIR ON)
如果启用此变量,CMake会自动将
CMAKE_CURRENT_SOURCE_DIR
和CMAKE_CURRENT_BINARY_DIR
添加到每个目录的包含路径中。
所以我更愿意在我的CMakeLists.txt
中根据需要单独拨打以下电话:
include_directories("${CMAKE_CURRENT_BINARY_DIR}")
编辑:感谢@zaufi的提示,如果您生成的头文件有目标范围,那么您应该更喜欢(CMake> =版本2.8.12)使其仅对此可见目标(不是全局到所有目标):
target_include_directories(MyLibrary PRIVATE "${CMAKE_CURRENT_BINARY_DIR}")
注意:对于具有相对路径的源文件,CMake会在CMAKE_CURRENT_SOURCE_DIR
和CMAKE_CURRENT_BINARY_DIR
两个目录中查找。