CMake和绝对标头路径

时间:2010-09-28 07:49:45

标签: c++ path header include cmake

我正在尝试使用CMake构建我的C ++项目,并且标题路径中存在问题。

由于我在很多目录中使用了很多类,所以我的所有include语句都是绝对路径(因此不需要使用“../../”)但是在尝试制作CMake生成的Makefile时它只是不起作用。

有谁知道如何在CMakeLists.txt中指定所有包含绝对路径?


尝试制作时的输出

~/multiboost/BanditsLS/GenericBanditAlgorithmLS.h:45:25: Utils/Utils.h: No such file or directory
~/multiboost/BanditsLS/GenericBanditAlgorithmLS.h:46:35: Utils/StreamTokenizer.h: No such file or directory

我的CMakeLists.txt文件:

#The following command allows the use of the "file" command
cmake_minimum_required(VERSION 2.6)  

#The declaration of the project
project(multiboost)  

#This allows recursive parsing of the source files
file(
    GLOB_RECURSE
    source_files
    *
    )  
list(REMOVE_ITEM source_files ./build/* )

#This indicates the target (the executable)  
add_executable(
    multiboost
    ${source_files} #EXCLUDE_FROM_ALL build/
    )

2 个答案:

答案 0 :(得分:14)

在CMakeLists.txt中你需要这样的东西:

SET(BASEPATH "${CMAKE_SOURCE_DIR}")
INCLUDE_DIRECTORIES("${BASEPATH}")

答案 1 :(得分:6)

设置正确的包含路径:假设你的Utils目录在/ exp / appstat / benbou / multiboost中,那么cmake(实际上,gcc)必须知道这个:

include_directories( /exp/appstat/benbou/multiboost )

或者将它作为在命令行传递的选项传递可能更方便:

include_directories( ${MyProjectRoot} )

cmake -DMyProjectRoot=/exp/appstat/benbou/multiboost