c++ - 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 库中可用。
解决方案
只需将以下内容添加到CMakeLists.txt
“测试”文件夹中的文件中:
target_include_directories(Google_Tests_run PRIVATE ${CMAKE_SOURCE_DIR}/inc)
尝试将上面的行添加到您的target_link_libraries(Google_Tests_run...)
. 那应该行得通。
有关信息:${CMAKE_SOURCE_DIR}
扩展到您的项目根文件夹。
注意:尝试始终使用target_include_directories
over include_directories
。
推荐阅读
- javascript - 如何使用 Lodash 将字符串与正则表达式匹配?
- html - 引导程序中的iphone屏幕不是xs大小吗?
- python - 从零开始学习python
- python - 如何在不需要使用 js2py 的情况下获得相同的结果
- openrefine - OpenRefine:正则表达式使用 match() 返回 null,但使用 contains() 返回 true
- c# - 有没有办法使用 ReadOnlySpan
netstandard2.0 类库中 StringBuilder 和 TryParse 方法的重载? - android - Firestore 阻止用户规则
- java - 当我希望执行插入查询时使用 Spring JPA 发布请求
- javascript - React:如何获取多个 API
- python - 如何向 keras 添加自定义指标?(百分比平均绝对误差)