(Как) я могу скомпилировать googletest для цели, отличной от POSIX?C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 (Как) я могу скомпилировать googletest для цели, отличной от POSIX?

Сообщение Anonymous »

Я нахожусь в среде кросс-компиляции, где мой проект необходимо скомпилировать для Linux, Windows и пользовательскую цель, которая кросс-компилируется в Windows.
Проект использует googletest для модульного тестирования и включается в файл поиска CMake следующим образом:

Код: Выделить всё

# FindGTest.cmake
if (CMAKE_SYSTEM_NAME STREQUAL "TheTarget")
FetchContent_Declare(
GTest
GIT_REPOSITORY https://github.com/google/googletest.git
GIT_TAG v1.14.0)
FetchContent_MakeAvailable(GTest)
else()
find_package(GTest CONFIG REQUIRED)
endif()
Сборки Windows и Linux не подвергаются кросс-компиляции и компилируются нормально. Но для пользовательской цели я получаю следующие ошибки компиляции (отредактированные для удобства чтения):

Код: Выделить всё

C:/dev/project/build/_deps/gtest-src/googletest/include\gtest/internal/gtest-port.h:2058:38: error: use of undeclared identifier 'isatty'
...
C:/dev/project/build/_deps/gtest-src/googletest/include\gtest/internal/gtest-port.h:2087:44: error: use of undeclared identifier 'chdir'
...
C:/dev/project/build/_deps/gtest-src/googletest/include\gtest/internal/gtest-port.h:2135:10: error: use of undeclared identifier 'getenv'; did you mean 'GetEnv'?
...
C:/dev/project/_deps/gtest-src/googletest\src/gtest-death-test.cc:1106:27: error: use of undeclared identifier 'pipe'
...
C:/dev/project/build/_deps/gtest-src/googletest\src/gtest-death-test.cc:1119:27: error: use of undeclared identifier 'fork'
...
C:/dev/project/build/_deps/gtest-src/googletest\src/gtest-death-test.cc:1204:3: error: use of undeclared identifier 'execv'
...
C:/dev/project/build/_deps/gtest-src/googletest\src/gtest-filepath.cc:115:18: error: use of undeclared identifier 'getcwd'
Как мне обойти эти ошибки компиляции для моей цели кросс-компиляции?

Есть ли способ сделать это, предоставив правильную комбинацию макросов в build (например, с помощью операторов CMake add_definition())?

Или мне нужно создать собственную версию gtest? Т.е. Я полагаю, это означает, что мне не следует использовать FetchContent_Declare()/

Код: Выделить всё

FetchContent_MakeAvailable()
или find_package(), чтобы включить googletest, но лучше я должен иметь googletest в качестве подкаталога моего проекта, возможно, с изменениями кода, чтобы обойти использование неопределенных функций (?)

Подробнее здесь: https://stackoverflow.com/questions/792 ... six-target
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • (Как) я могу скомпилировать googletest для цели, отличной от POSIX?
    Anonymous » » в форуме C++
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Как скомпилировать Googletest на Windows, используя Mingw с MSYS?
    Anonymous » » в форуме C++
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • Могу ли я передать параметры в тестовую функцию Googletest?
    Гость » » в форуме C++
    0 Ответы
    29 Просмотры
    Последнее сообщение Гость
  • CMake не может найти необходимую библиотеку GoogleTest в Ubuntu
    Anonymous » » в форуме C++
    0 Ответы
    38 Просмотры
    Последнее сообщение Anonymous
  • Динамические параметризованные тесты с GoogleTest и CTest
    Anonymous » » в форуме C++
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C++»