cpplint.py & cmake: 如何指定包含文件
cpplint.py & cmake: how to specify include files
假设我有一个目录结构如下的项目:
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 项目的设置方式?
在您的顶层 CMakeLists.txt 添加 include_directories(${CMAKE_SOURCE_DIR})
,就像 Wander 建议的那样:
project(myproject)
include_directories(${CMAKE_SOURCE_DIR})
add_subdirectory(src)
假设我有一个目录结构如下的项目:
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 项目的设置方式?
在您的顶层 CMakeLists.txt 添加 include_directories(${CMAKE_SOURCE_DIR})
,就像 Wander 建议的那样:
project(myproject)
include_directories(${CMAKE_SOURCE_DIR})
add_subdirectory(src)