首页 > 解决方案 > CMake 包含/源路径有效配置

问题描述

我有以下 C++ 项目结构:

Project
├───inc
├───src
└───tests
    └───googletest

根文件夹内的 CMakeLists 具有以下内容:

cmake_minimum_required(VERSION 3.16)
project(Project)
add_subdirectory(tests)

set(CMAKE_CXX_STANDARD 17)

add_executable(Project_run main.cpp)

以及测试文件夹内的 CMakeLists:

project(Project_Tests)

set(CMAKE_CXX_STANDARD 17)

add_subdirectory(googletest)
include_directories(${gtest_SOURCE_DIR}/include ${gtest_SOURCE_DIR})
include_directories(${gmock_SOURCE_DIR}/include ${gmock_SOURCE_DIR})

add_executable(Google_Tests_run test.cpp)
target_link_libraries(Google_Tests_run gtest gtest_main gmock)

它编译得很好。现在我想在文件夹中有类头,在inc文件夹中src有源。src我应该在文件夹中使用新的 CMake 文件吗?项目文件也应该在 googletests 库中可用。

标签: c++cmake

解决方案


只需将以下内容添加到CMakeLists.txt“测试”文件夹中的文件中:

target_include_directories(Google_Tests_run PRIVATE ${CMAKE_SOURCE_DIR}/inc)

尝试将上面的行添加到target_link_libraries(Google_Tests_run...). 那应该行得通。

有关信息:${CMAKE_SOURCE_DIR}扩展到您的项目根文件夹。

注意:尝试始终使用target_include_directoriesover include_directories


推荐阅读