Yocto(Open Embedded) 시스템에서 Google 테스트 사용을 시작하는 방법

Yocto(Open Embedded) 시스템에서 Google 테스트 사용을 시작하는 방법

저는 ARM64 장치용 프로젝트를 진행 중이며 Linux Embedded를 운영 체제로 사용하고 있습니다. Google Tests를 사용하려고 하는데 bitbake를 실행하면 실패합니다. 오류는 다음과 같습니다.

| CMake Error at /#####/tmp-glibc/work/#####-oe-linux/project_name/1.0-r0/recipe-sysroot-native/usr/share/cmake-3.16/Modules/GoogleTestAddTests.cmake:40 (message):
|   Error running test executable.
|
|     Path: '/#####/tmp-glibc/work/#####-oe-linux/project_name/1.0-r0/build/projectName/hello_test'
|     Result: 126
|     Output:
|
|
|
|
| ninja: build stopped: subcommand failed.
| WARNING: /#####/tmp-glibc/work/#####-oe-linux/project_name/1.0-r0/temp/run.do_compile.19988:1 exit 1 from 'eval ${DESTDIR:+DESTDIR=${DESTDIR} }VERBOSE=1 cmake --build '/#####/tmp-glibc/work/#####-oe-linux/project_name/1.0-r0/build' "$@" -- ${EXTRA_OECMAKE_BUILD}'

src 폴더에서 cmake를 편집하고 Gtests에 다음 구성 요소를 추가했습니다.

cmake_minimum_required(VERSION 3.5.0)
# set the project name and version
project(project_name)

#specify C++ standards
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED True)

add_compile_options (-std=c++11 -Wall)

configure_file(common/inc/common.h.in common.h)

add_definitions(-DPACKAGE_ARCH=${PACKAGE_ARCH})
add_definitions(-DPACKAGE_DISTRO=${PACKAGE_DISTRO})

include(FetchContent)
FetchContent_Declare(
  googletest
  URL https://github.com/google/googletest/archive/609281088cfefc76f9d0ce82e1ff6c30cc3591e5.zip
)
# For Windows: Prevent overriding the parent project's compiler/linker settings
set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
FetchContent_MakeAvailable(googletest)

add_subdirectory (executable_name ${PROJECT_BINARY_DIR}/srclocation)

테스트 사례가 포함된 파일용 CMake:

set(S_EXECUTABLE executableName)
#specify C++ standards
add_compile_options (-std=c++11 -Wall)

# add the executable
add_executable(${S_EXECUTABLE } src/abc.cpp)
target_include_directories(${S_EXECUTABLE}
    PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/inc
    PUBLIC ${PROJECT_BINARY_DIR})

install(
  TARGETS ${S_EXECUTABLE}
  RUNTIME DESTINATION ${FOOBAR_INSTALL_BINDIR}
  PERMISSIONS OWNER_EXECUTE OWNER_WRITE OWNER_READ
              GROUP_EXECUTE GROUP_READ
              GROUP_EXECUTE GROUP_READ
)

enable_testing()

add_executable(
  hello_test
  src/hello_test.cpp
)
target_link_libraries(
  hello_test
  gtest_main
)

include(GoogleTest)
gtest_discover_tests(hello_test)

관련 정보