c++ - 如何从我的项目 CMakeLists.txt 构建 gtest 静态库?

标签 c++ cmake googletest

我有一个主项目和一个子项目测试。 在 project/CMakeLists.txt 我添加了

add_subdirectory(tests)

project/tests/CMakeLists.txt 中,我插入“预编译”gtest 库(来自 Ubuntu 存储库)。我cd 到/usr/src/gtest 并将两个*.a 文件编译到系统lib 目录中。 它工作正常,直到问题记录在 google test FAQ 中出现了。

如何从 project/tests/CMakeLists.txt 构建 gtest 静态库文件以及如何使用这个新的 *.a 文件而不是系统文件?

最佳答案

最后我找到了如何在不将 googletest 添加为子项目的情况下重建静态 libgtest.a

使用来自 this 的信息链接并从 this 的底部开始链接。

我的项目/tests/CMakeLists.txt 中有趣的部分:

.....
# Locate GTest
#find_package(GTest REQUIRED)
#include_directories(SYSTEM ${GTEST_INCLUDE_DIRS})
set(GTEST_SRC /usr/src/gtest/src/gtest-all.cc)
include_directories(SYSTEM /usr/src/gtest # <-- path to non-header files from gtest-all.cc
                           /usr/include)  # <-- path to gtest headers

add_library(gtest STATIC ${GTEST_SRC})    # <-- make static library target before main project executable
target_link_libraries(gtest ${CMAKE_THREAD_LIBS_INIT})

# Link runTests with what we want to test and the GTest and pthread library
add_executable(tests ${SRC})
target_link_libraries(tests ${Boost_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT} gtest) # <-- finaly link this library as others

关于c++ - 如何从我的项目 CMakeLists.txt 构建 gtest 静态库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42241329/

相关文章:

c++ - 有界整数堆栈 C++

c++ - GLSL 和 GLM 之间的矩阵数学不一致,或者是否存在诸如 "bad" View 矩阵之类的东西

c++ - 枚举元素定义?

c++ - Qt 从资源包目录中读取文件

CMake : Selecting mpich over openmpi

c++ - 是否可以在单独的进程中运行每个测试用例?

c++ - 删除特定属性后如何删除在 XML 文件中创建的空行

cmake:在 CMakeLists.txt 中选择一个生成器

c++ - 如何使用 GTest 测试严重依赖 MFC 的方法

c++ - 期望以确切的对象实例作为参数调用