CMake и абсолютные пути к заголовкам - PullRequest
12 голосов
/ 28 сентября 2010

Я пытаюсь использовать CMake для создания своего проекта C ++, и у меня есть проблема с путями заголовков.

Поскольку я использую много классов, организованных в нескольких каталогах, все мои операторы includeс абсолютными путями (поэтому не нужно использовать "../../"), но при попытке создать сгенерированный CMake Makefile он просто не работает.

Кто-нибудь знает, как указать в CMakeLists.txt, что все включения с абсолютными путями?


Мой вывод при попытке сделать

~/multiboost/BanditsLS/GenericBanditAlgorithmLS.h:45:25: Utils/Utils.h: No such file or directory<br> ~/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 ]

15 голосов
/ 28 сентября 2010

Вам нужно что-то подобное в CMakeLists.txt:

SET(BASEPATH "${CMAKE_SOURCE_DIR}")
INCLUDE_DIRECTORIES("${BASEPATH}")
6 голосов
/ 28 сентября 2010

установите правильный путь включения: предположим, что ваш каталог Utils находится в / exp / appstat / benbou / multiboost, а затем cmake (ну, фактически, gcc) должен знать это:

include_directories( /exp/appstat/benbou/multiboost )

или было бы удобнее передать это как параметр, который передается в командной строке:

include_directories( ${MyProjectRoot} )

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