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