#c #unit-testing #installation #visual-studio-2019 #googletest
#c #модульное тестирование #установка #visual-studio-2019 #googletest
Вопрос:
Я уже очень давно пытаюсь настроить Google test версии v1.10 в Visual studio 2019, и это не работает, и многое изменилось. В большинстве руководств отсутствуют данные, а на странице справки Microsoft указано использовать Google test adapter, но у меня есть уже существующий проект, в который я хочу добавить Google test. Я ссылался на страницу установки Google test (https://github.com/google/googletest/blob/master/googletest/README.md ) и попытался настроить его с помощью метода cmake, но он не работает, а метод cmake немного сложен. Мне было интересно, может ли кто-нибудь помочь с шагами для такого манекена, как я? Я чувствую, что это также поможет людям, которые пытаются настроить его в настоящее время и тоже застряли.
Это то, что я сделал для cmake thingy:
-
создал пустой проект в vs и добавил source.cpp файл и файл Header.h (для примера).
-
Я создал CMakeLists.txt и еще CMakeLists.txt.in файл и копия вставили это для первого (немного подправили для моего проекта)
# Download and unpack googletest at configure time
configure_file(CMakeLists.txt.in googletest-download/CMakeLists.txt)
execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" .
RESULT_VARIABLE result
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/googletest-download )
if(result)
message(FATAL_ERROR "CMake step for googletest failed: ${result}")
endif()
execute_process(COMMAND ${CMAKE_COMMAND} --build .
RESULT_VARIABLE result
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/googletest-download )
if(result)
message(FATAL_ERROR "Build step for googletest failed: ${result}")
endif()
# Prevent overriding the parent project's compiler/linker
# settings on Windows
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
# Add googletest directly to our build. This defines
# the gtest and gtest_main targets.
add_subdirectory(${CMAKE_CURRENT_BINARY_DIR}/googletest-src
${CMAKE_CURRENT_BINARY_DIR}/googletest-build
EXCLUDE_FROM_ALL)
# The gtest/gtest_main targets carry header search path
# dependencies automatically when using CMake 2.8.11 or
# later. Otherwise we have to add them here ourselves.
if (CMAKE_VERSION VERSION_LESS 2.8.11)
include_directories("${gtest_SOURCE_DIR}/include")
endif()
# Now simply link against gtest or gtest_main as needed. Eg
add_executable(test_ source.cpp)
target_link_libraries(test_ gtest_main)
add_test(NAME example_test COMMAND test)
и CMakeLists.txt.in
cmake_minimum_required(VERSION 2.8.2)
project(googletest-download NONE)
include(ExternalProject)
ExternalProject_Add(googletest
GIT_REPOSITORY https://github.com/google/googletest.git
GIT_TAG master
SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/googletest-src"
BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/googletest-build"
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ""
TEST_COMMAND ""
)
- Я создал папку сборки в своем файле проекта
- Я использовал команду cmake из терминала, чтобы встроить ее в папку сборки следующим образом
cmake -S "path to src code" -B "path to build"
и это предупреждения, которые я получил:
No project() command is present. The top level CMakeLists.txt file must contain a literal, direct call to the project() command. And a line of code such as
project(projectName)
near the top of the CMake file, but after cmake_minimum_required().
CMake is pretending there is a "project(projectName)" command on the first line.
This warning is for project developers. Use who-dev to supress it.
кроме этого, он создал здание
, и в настоящее время это мое дерево проектов
и это то, что есть в / build
но idk, что делать после этого? Как мне начать создавать тесты? Если возможно, я хочу создать еще один проект внутри моего текущего решения, чтобы я мог запускать тесты отдельно
вот что значит
проект googletest — это то место, где я хочу запускать свои тесты, если это возможно
и вот как выглядит мое дерево проектов после
Комментарии:
1. Что не сработало? Какие сообщения об ошибках вы получили на каком этапе процесса?
2. @starturtle я добавил больше информации, не могли бы вы помочь, пожалуйста?
3. Чего мне не хватает, так это
enable_testing()
вызова, например. Кроме того, начало вашего собственного CMakeLists.txt должен содержать acmake_minimum_required(VERSION 2.8.2)
(или все, что вам нужно) иproject(Project24)
call (это ваше предупреждение). Ваш вызов add_executable должен быть, скорееadd_executable(myTest test_source.cpp)
, измененadd_test(NAME example_test COMMAND myTest)
. Это то, что я вижу отсюда до сих пор. К сожалению, я знаком только с CMake или gtest, а не с обоими в одном проекте.
Ответ №1:
Перейдите по этой ссылке на T: https://www.bogotobogo.com/cplusplus/google_unit_test_gtest.php Вам не придется использовать CMake.
В VS2019, чтобы получить статические библиотеки win32 и консольные приложения, в разделе «Создать новый проект» выберите C в языковом теге, Windows в теге платформы и все типы проектов в теге types . Затем прокрутите вниз, чтобы найти Мастер рабочего стола Windows и выберите его. Остальное в соответствии с руководством.
Комментарии:
1. Поскольку у вас есть решение вашей проблемы, я предлагаю вам отметить свой собственный ответ , чтобы помочь другим членам сообщества искать и решать похожие проблемы. Спасибо 🙂
2. спасибо за предупреждение @PerryQian-MSFT . У вас это тоже сработало?