gtest 设置 cmake 以使其运行
gtest setup cmake to get it run
我想在我的C++项目中加入gtest。我正在使用Clion作为IDE,它应该可以工作。一些测试已经在工作,但我无法使用 B_RocChoice.h 中的任何功能。它说函数没有在此范围内声明。
有人可以告诉我我做错了什么吗?我必须如何更改我的 CMakeLists.txt 文件,它重新识别我的方法?
这是我的basic_tests.cpp,我的测试用例将在这里编写。
这是我的目录。
在这里,最外在的CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
project(cli)
find_package( OpenCV REQUIRED )
include_directories( ${OpenCV_INCLUDE_DIRS} )
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -pthread")
set(SOURCE_FILES
include/A_WowbaggerChoice.h
include/AbstractChoice.h
include/B_RocChoice.h
include/C_CnnChoice.h
include/D_DetectorChoice.h
include/E_LearningChoice.h
include/Help.h
include/MyException.h
include/StartScreen.h
include/tinyxml.h
include/types.h
src/A_WowbaggerChoice.cpp
src/AbstractChoice.cpp
src/B_RocChoice.cpp
src/C_CnnChoice.cpp
src/D_DetectorChoice.cpp
src/E_LearningChoice.cpp
src/Help.cpp
src/main.cpp
src/MyException.cpp
src/StartScreen.cpp
tinyxml/tinystr.cpp
tinyxml/tinystr.h
tinyxml/tinyxml.cpp
tinyxml/tinyxml.h)
add_subdirectory(googletest)
add_executable(cli ${SOURCE_FILES})
target_link_libraries( cli ${OpenCV_LIBS} )
CMakeLists.txt
gtest
.
cmake_minimum_required(VERSION 2.6.2)
project( googletest-distribution )
enable_testing()
option(BUILD_GTEST "Builds the googletest subproject" ON)
#Note that googlemock target already builds googletest
option(BUILD_GMOCK "Builds the googlemock subproject" OFF)
if(BUILD_GMOCK)
add_subdirectory( googlemock )
elseif(BUILD_GTEST)
add_subdirectory( googletest )
endif()
add_subdirectory(basic_tests)
basic_tests
CMakeLists.txt
include_directories($(gtest_SOURCE_DIR}/include
${getest_SOURCE_DIR}))
#include_directories(../../src/)
include_directories(../../include/)
add_executable(runBasicCli
basic_check.cpp)
target_link_libraries(runBasicCli gtest gtest_main)
#target_link_libraries(cli)
我假设您的编译器抱怨找不到B_RocChoices.h
标头?您的问题似乎暗示编译器错误是关于找不到函数,但B_RocChoices
是标头而不是basic_tests.cpp
文件中的函数。
假设您的问题是编译器找不到B_RocChoices.h
标头,我希望当您include_directories(../../include)
时,您希望将B_RocChoices.h
所在的目录作为标头搜索路径的一部分。这是一个相对路径,因此它取决于编译器从何处运行,以及它的含义(例如,如果您执行源代码构建,它将不起作用(。尝试使用 CMAKE_SOURCE_DIR 或 CMAKE_CURRENT_SOURCE_DIR 明确定义路径。例如:
include_directories(${CMAKE_SOURCE_DIR}/include)
如果您使用的是 CMake 2.8.11 或更高版本,我建议您考虑改用 target_include_directories((,并且可能还会阅读 target_link_libraries((。总之,这些允许您使标头搜索路径和链接库特定于目标,而不是全局到所有目标。最后,如果您希望将GoogleTest作为构建的一部分下载,而不是直接将其嵌入到项目源代码中,您可能会发现以下链接很有用:
https://crascit.com/2015/07/25/cmake-gtest/
- QTEST_MAIN如何自动设置所有内容以运行测试?
- 在编译时为运行时设置环境变量
- 在 vscode 中运行时无法暂停或设置断点
- Visual Studio 2017 - 调试和 Relese 配置,设置运行时库
- 为 g++ build 设置超时,为 Sublime Text 运行?
- glfw 的基本设置会导致与 emscripten 生成的 js 文件中的事件侦听器有关的运行时错误
- 如果事件在仍在执行时再次设置,RegisterWaitForSingleObject 是否会并行运行回调?
- 在 Visual Studio 解决方案中设置所有项目的运行时库
- 如何使用 QProcess 设置参数以运行类文件?
- 在运行时为随机分布类成员设置最小和最大边界?
- 第二个 while 循环未运行,将值设置为 "nan"
- 如何在运行时对程序创建的.sys文件设置文件版本
- 如何在C++(JNI)中设置正在运行的JVM的类路径
- MSVCP140.dll尽管设置了 /MT 运行时库
- 在底部设置运行过程
- 如何设置cmakelists.txt文件以启动和运行Xtensor-python示例代码
- while 循环是否在设置标志的情况下运行多次?
- 任务计划程序:设置运行级别时拒绝访问
- 在 Visual Studio 2017 C++项目中设置调试/运行环境变量
- 为特定过程的特定运行设置环境变量