Предположим, у меня есть проект следующей структуры каталогов:
myproject
├── .git [...]
├── CMakeLists.txt
└── src
├── CMakeLists.txt
├── foo.cc
└── foo.h
Если в src/foo.cc
Я включаю заголовочный файл как #include "foo.h"
а затем запустить Google cpplint.py на это он жалуется с
src/foo.cc:8: Include the directory when naming .h files [build/include] [4]
Поэтому я включаю это как #include "./foo.h"
, Теперь я получил еще одну жалобу:
src/foo.cc:8: src/foo.cc should include its header file src/foo.h [build/include] [5]
Однако, если я включу это как #include "src/foo.h"
, компилятор не найдет его, с моей текущей настройкой CMake. Вот как выглядят мои два файла CMakeLists.txt:
CMakeLists.txt:
project(myproject)
add_subdirectory(src)
SRC / CMakeLists.txt:
set(SRCS foo.cc)
add_executable(foo ${SRCS})
Является ли способ, которым я использую CMake как-то в корне неправильно? Должен ли я удалить src/CMakeLists.txt
файл целиком, и укажите все исходные файлы в базе CMakeLists.txt
с их полным путем?
Или я должен просто игнорировать жалобы cpplint, поскольку они не совсем соответствуют тому, как должны быть созданы проекты CMake?
добавлять include_directories(${CMAKE_SOURCE_DIR})
в вашем верхнем уровне CMakeLists.txt, как предложил Wander:
project(myproject)
include_directories(${CMAKE_SOURCE_DIR})
add_subdirectory(src)
Других решений пока нет …