Ответ 1
Вам нужно что-то подобное в CMakeLists.txt:
SET(BASEPATH "${CMAKE_SOURCE_DIR}")
INCLUDE_DIRECTORIES("${BASEPATH}")
Я искал время для поиска, и у меня нет результата, поэтому я обращаюсь к вам, ребята ^^ Я пытаюсь использовать 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/
)
Вам нужно что-то подобное в CMakeLists.txt:
SET(BASEPATH "${CMAKE_SOURCE_DIR}")
INCLUDE_DIRECTORIES("${BASEPATH}")
установите правильный путь include: предположим, что ваш каталог Utils находится в /exp/appstat/benbou/multiboost, тогда cmake (ну, собственно, gcc) должен знать это:
include_directories( /exp/appstat/benbou/multiboost )
или было бы удобнее передать это как опцию, которая передается в командной строке:
include_directories( ${MyProjectRoot} )
cmake -DMyProjectRoot=/exp/appstat/benbou/multiboost