gtest 设置 cmake 以获取它 运行
gtest setup cmake to get it run
我想将 gtest 包含到我的 C++ 项目中。我将 Clion 用作 IDE,应该可以。一些测试已经在运行,但我无法使用 B_RocChoice.h 中的任何功能。它说该函数未在此范围内声明。
有人可以告诉我我做错了什么吗?我必须如何更改它识别我的方法的 CMakeLists.txt 文件?
这是我的 basic_tests.cpp,我的测试用例将写在这里。
这是我的Directory。
这里最外层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)
CMakeLists.txt
对于 basic_tests
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
header?您的问题似乎暗示编译器错误是关于找不到函数,但 B_RocChoices
是 header 而不是 basic_tests.cpp
文件中的函数。
假设您的问题是编译器没有找到 B_RocChoices.h
header,我预计当您 include_directories(../../include)
时,您想要创建 [=11= 所在的目录] 位于 header 搜索路径的一部分。这是一个相对路径,因此它取决于编译器从哪里 运行 以及它意味着什么路径(例如,如果您在源代码之外进行构建,它就不会工作)。尝试使用 CMAKE_SOURCE_DIR 或 CMAKE_CURRENT_SOURCE_DIR 来明确定义路径。例如:
include_directories(${CMAKE_SOURCE_DIR}/include)
如果您使用的是 CMake 2.8.11 或更高版本,我建议您考虑使用 target_include_directories() instead and probably also read up on target_link_libraries()。这些一起允许您使 header 搜索路径和 linked 库特定于目标而不是所有目标的全局。最后,如果您更愿意将 GoogleTest 作为构建的一部分下载,而不是将其直接嵌入到您的项目源代码中,您可能会发现以下 link 有用:
我想将 gtest 包含到我的 C++ 项目中。我将 Clion 用作 IDE,应该可以。一些测试已经在运行,但我无法使用 B_RocChoice.h 中的任何功能。它说该函数未在此范围内声明。
有人可以告诉我我做错了什么吗?我必须如何更改它识别我的方法的 CMakeLists.txt 文件?
这是我的 basic_tests.cpp,我的测试用例将写在这里。
这是我的Directory。
这里最外层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)
CMakeLists.txt
对于 basic_tests
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
header?您的问题似乎暗示编译器错误是关于找不到函数,但 B_RocChoices
是 header 而不是 basic_tests.cpp
文件中的函数。
假设您的问题是编译器没有找到 B_RocChoices.h
header,我预计当您 include_directories(../../include)
时,您想要创建 [=11= 所在的目录] 位于 header 搜索路径的一部分。这是一个相对路径,因此它取决于编译器从哪里 运行 以及它意味着什么路径(例如,如果您在源代码之外进行构建,它就不会工作)。尝试使用 CMAKE_SOURCE_DIR 或 CMAKE_CURRENT_SOURCE_DIR 来明确定义路径。例如:
include_directories(${CMAKE_SOURCE_DIR}/include)
如果您使用的是 CMake 2.8.11 或更高版本,我建议您考虑使用 target_include_directories() instead and probably also read up on target_link_libraries()。这些一起允许您使 header 搜索路径和 linked 库特定于目标而不是所有目标的全局。最后,如果您更愿意将 GoogleTest 作为构建的一部分下载,而不是将其直接嵌入到您的项目源代码中,您可能会发现以下 link 有用: