如何修复创建使用私有include\u目录的库的cmake配置
我正在学习如何编写“现代”cmake配置,并试图创建一个库与可执行文件的链接。我的测试项目结构如下所示:如何修复创建使用私有include\u目录的库的cmake配置,cmake,Cmake,我正在学习如何编写“现代”cmake配置,并试图创建一个库与可执行文件的链接。我的测试项目结构如下所示: . |-- foo | |-- src | | |-- foo.cpp | | `-- foo_impl.cpp | |-- include | | `-- foo | | `-- foo.h | |-- internal | | `-- foo_impl.h | `-- CMakeLists.txt |-- src | `
.
|-- foo
| |-- src
| | |-- foo.cpp
| | `-- foo_impl.cpp
| |-- include
| | `-- foo
| | `-- foo.h
| |-- internal
| | `-- foo_impl.h
| `-- CMakeLists.txt
|-- src
| `-- main.cpp
`-- CMakeLists.txt
./CMakeLists.txt是
cmake_minimum_required(VERSION 3.12)
project(test_cmake LANGUAGES CXX)
add_subdirectory(foo)
add_executable(test_executable
src/main.cpp
)
target_include_directories(test_executable
PRIVATE
include
foo
)
cmake_minimum_required(VERSION 3.12)
add_library(foo
src/foo_impl.cpp
src/foo.cpp
)
target_include_directories(foo
PUBLIC
include
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}
)
/foo/CMakeLists.txt是
cmake_minimum_required(VERSION 3.12)
project(test_cmake LANGUAGES CXX)
add_subdirectory(foo)
add_executable(test_executable
src/main.cpp
)
target_include_directories(test_executable
PRIVATE
include
foo
)
cmake_minimum_required(VERSION 3.12)
add_library(foo
src/foo_impl.cpp
src/foo.cpp
)
target_include_directories(foo
PUBLIC
include
PRIVATE
${CMAKE_CURRENT_SOURCE_DIR}
)
此配置的理由是测试cmake是否向库foo的客户端公开“foo/internal”文件夹
我的配置有错误吗?您的cmake中有一个类型/错误 在CMakeLists.txt中,您可以执行以下操作:
target_include_directories(test_executable
这将添加include目录。您需要链接到foo
项目:
target_link_libraries(test_executable
PRIVATE foo)
您的cmake中有一个类型/错误 在CMakeLists.txt中,您可以执行以下操作:
target_include_directories(test_executable
这将添加include目录。您需要链接到foo
项目:
target_link_libraries(test_executable
PRIVATE foo)