【发布时间】:2021-02-12 00:07:02
【问题描述】:
我有一个大型 C++ 库,想用 GTest 做一些测试。 目前,构建是使用 CMake 处理的,特别是在根目录中有一个 CMakeLists.txt 文件,如下所示
make_minimum_required(VERSION 3.13.0)
project(mylib)
find_package(PkgConfig REQUIRED)
set(CMAKE_BUILD_WITH_INSTALL_RPATH ON)
set(CMAKE_INSTALL_RPATH "${CMAKE_CURRENT_SOURCE_DIR}/lib/protobuf/src/.libs/")
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
SET(BASEPATH "${CMAKE_SOURCE_DIR}")
INCLUDE_DIRECTORIES("${BASEPATH}")
add_executable(mylib run.cpp)
add_subdirectory(src)
add_subdirectory(proto)
target_include_directories(mylib PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/lib/math
${CMAKE_CURRENT_SOURCE_DIR}/lib/protobuf/src
... some dirs ...
)
target_link_directories(mylib PRIVATE
... some libs ..
)
target_link_libraries(mylib
${CMAKE_CURRENT_SOURCE_DIR}/lib/math
${CMAKE_CURRENT_SOURCE_DIR}/lib/protobuf/src
.....
)
target_compile_options(mylib PUBLIC -D_REENTRANT -fPIC)
然后在src目录和每个子目录下都有一个CMakeLists.txt文件,比如这个在src/中
target_sources(mylib
PUBLIC
includes.hpp
)
add_subdirectory(algorithms)
add_subdirectory(collectors)
add_subdirectory(hierarchies)
add_subdirectory(mixings)
add_subdirectory(runtime)
add_subdirectory(utils)
我的问题如下:在当前项目中集成 GTest 最不痛苦的方式是什么?我正在考虑创建一个 test/ 子目录,就像我在这里看到的那样:Adding Googletest To Existing CMake Project
但是,此示例要求您手动列出每个可执行文件包含的所有文件。有没有更快的方法来使用已经添加到 'mylib' 的源代码?
【问题讨论】:
标签: c++ cmake googletest