我有一个主要的项目和一个子项目测试
项目/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源代码



当我们下载该ZIP文件时,我们得到了googletest和googlemock项目,但是在这里我将仅使用googletest文件夹。我将ZIP文件解压缩,然后将googletest文件夹复制到我的项目中,例如:

/home/name/myProject/

该文件夹中的内容如下所示:
- CMakeLists.txt
- googletest /
- main.cpp

在CMakeList文件中,我可以将gtest添加为子目录并针对它链接我的可执行文件。我建立一个最小的例子:
cmake_minimum_required(VERSION 2.6.4)
project(MyProject)

enable_testing()
add_subdirectory( googletest )

# this sets the output dir to /bin
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR}/bin)

include_directories(${CMAKE_SOURCE_DIR}/googletest/include)
add_executable(myExe main.cpp)
target_link_libraries(myExe gtest_main gtest)

最后三行将包含路径设置为googletest,添加可执行文件并将exe与gtest链接。
下载gtest并创建cmake结构后,您可以构建程序:
$ mkdir bin
$ cd bin
$ cmake ..
$ make

并调用exe:
$ ./myExe

我希望这将有所帮助。

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

10-14 22:58
查看更多