Подтвердить что ты не робот

CMake и абсолютные пути заголовка

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

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

Кто-нибудь знает, как указать в 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/
    )
4b9b3361

Ответ 1

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

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

Ответ 2

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

include_directories( /exp/appstat/benbou/multiboost )

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

include_directories( ${MyProjectRoot} )

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