我是CMake的新手,我正在使用Google Test Framework.我已经找到了将CMake和Google测试框架结合起来的更复杂的例子,但我没有太多运气.我希望有人可以就我到达的设置提出他们的意见并为我回答一个问题.这是基本的项目结构:
ProjectFolder
-CMakeLists.txt
/ build
/ include- all
我的.h文件
/ src
-CMakeLists.txt-
所有我的.cpp文件
/测试
-CMakeLists.txt
/ gtest
-Google的CMakeLists.txt
/ mocks
-CMakeLists.txt
-cpp和h模拟文件
简而言之,根cmake文件将src和tests作为子目录添加.src cmake文件将cpp文件复制到库中.测试cmake文件添加了mocks和gtest作为子目录.模拟cmake文件将其所有cpp文件复制到第二个库中.最后,tests文件夹中的cmake文件将src库,google库和mocks库与单元测试可执行文件链接起来.
我最终得到的是几个可执行文件:objA_unittest,objB_unittest等
一些东西:
要构建所有这些并仍然保持我的项目目录相当干净我进入构建文件夹并运行"cmake .."这似乎工作得很好,我计划配置vim以始终运行make这个文件夹.有没有人有这方法的任何提示或看到任何问题?
我不喜欢在我的项目文件夹中嵌入谷歌库的想法(特别是如果我最终有几个项目使用它),但是因为它似乎强烈建议您不要预编译谷歌库我可以看到没办法解决这个问题.但是,如果有人知道更好的方式,我很乐意听到它.
运行测试.我喜欢我所要做的就是运行"make test"来用ctest执行我的所有单元测试.但是,我发现我不太喜欢输出.每个单元测试可执行文件包含几个不同的单 直接运行这些提供了Google非常详细的反馈.如果可执行文件中的某个测试失败,我确切知道测试失败的原因和原因.以前,我使用了makefile,在makefile的末尾我只执行了所有的测试.我首先尝试通过在cmake中创建自定义构建目标来解决此问题.但是,它只执行第一个命令.我要么需要一种方法来从CTest获得更详细的输出,或者我需要一种方法来自动输出bash脚本或类似于CMake的东西来执行每个单元测试可执行文件.换句话说,我现在已经设置了cmake文件,所以我只需要在一个地方添加单元测试来生成可执行文件,我不想记得将它添加到第二个位置,如果我能避免的话它.有没有人有这方面的经验?
首先十分感谢.
And*_*aev 11
将以下行添加到顶级CMakeLists.txt(添加任何测试之前):
add_custom_target(test)
macro(run_test test_target)
add_custom_target(${test_target}_runtest
COMMAND ${test_target} #cmake 2.6 required
DEPENDS ${test_target}
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}")
add_dependencies(test ${test_target}_runtest)
endmacro()
Run Code Online (Sandbox Code Playgroud)
接下来为每个测试添加一行以将测试附加到test目标:
#add_executable(mytest ${mysources})
run_test(mytest)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13669 次 |
| 最近记录: |