Невозможно установить ссылку на brew-installde cppunit в образе Travis OSX - PullRequest
1 голос
/ 21 июня 2020

У меня есть проект C ++ на основе cmake на github, который создается с помощью Travis CI. Файл .travis.yml для сборки на OSX с clang имеет следующее:

language: cpp

jobs:
  include:
    - os: osx
      compiler: gcc
      osx_image: xcode11.2
      env:
        - GCC_VER="9"
        - MATRIX_EVAL="CC=gcc-${GCC_VER} && CXX=g++-${GCC_VER}"
      addons:
        homebrew:
          packages:
          - cppunit
          - mruby

... (other OS) ...

before_script:
  - eval "${MATRIX_EVAL}"

script:
  - cmake -D ENABLE_TESTS:BOOL=TRUE .
  - cmake --build . -- -j2
  - ctest -j2

CppUnit устанавливается brew.

Команда cmake работает нормально и находит CppUnit в /usr/local (т.е. CPPUNIT_INDLUE_DIR правильно установлен на /usr/local/include, а CPPUNIT_LIBRARIES правильно установлен на /usr/local/lib/libcppunit.dylib. Однако при построении тестов я получаю ошибки ссылок о неопределенных символах, связанных с cppunit, что указывает на то, что он неправильно связывается с cppunit.

Тот же проект отлично работает на моем MacBook (также с установленным cppunit), и он правильно строится на Linux как с g cc -9, так и с clang, с cppunit, установленным через apt.

Я думал, что мне нужно где-то установить DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:/usr/local/lib, но когда я это сделаю, я получаю новые ошибки:

$ cmake -D ENABLE_TESTS:BOOL=TRUE .

dyld: Symbol not found: __cg_jpeg_resync_to_restart

  Referenced from: /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO

  Expected in: /usr/local/lib/libJPEG.dylib

 in /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO

/Users/travis/.travis/functions: line 109:  3565 Abort trap: 6           cmake -D ENABLE_TESTS:BOOL=TRUE .

The command "cmake -D ENABLE_TESTS:BOOL=TRUE ." exited with 134.

Вот файл CMakeLists.txt в root источника:

cmake_minimum_required (VERSION 3.1)
project (mrbind17 CXX)

set (CMAKE_CXX_STANDARD 17)

set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH}
     "${CMAKE_CURRENT_SOURCE_DIR}/cmake")


add_definitions(-g)
option(ENABLE_TESTS "Build tests. May require CppUnit_ROOT" OFF)

include_directories (${CMAKE_CURRENT_SOURCE_DIR}/include)

find_package (Mruby REQUIRED)
include_directories (${Mruby_INCLUDE_DIR})

find_package (CppUnit)
if (CPPUNIT_FOUND)
    message(STATUS "CppUnit found, unit tests will be compiled")
    message(STATUS "CPPUNIT_INCLUDE_DIR : ${CPPUNIT_INCLUDE_DIR}")
    message(STATUS "CPPUNIT_LIBRARIES : ${CPPUNIT_LIBRARIES}")
    include_directories(${CPPUNIT_INCLUDE_DIR})
    enable_testing()
    if(${ENABLE_TESTS})
        add_subdirectory (test)
    endif(${ENABLE_TESTS})
else (CPPUNIT_FOUND)
    message(STATUS "CppUnit not found, unit tests will not be compiled")
endif (CPPUNIT_FOUND)

и CMakeLists.txt в тестовом каталоге:

add_executable(interpreter_test main.cpp interpreter_test.cpp)
target_link_libraries(interpreter_test ${Mruby_LIBRARIES} ${CPPUNIT_LIBRARIES})
add_test(NAME interpreter_test COMMAND ./interpreter_test interpreter_test.xml)

add_executable(function_test main.cpp function_test.cpp)
target_link_libraries(function_test ${Mruby_LIBRARIES} ${CPPUNIT_LIBRARIES})
add_test(NAME function_test COMMAND ./function_test function_test.xml)

add_executable(module_test main.cpp module_test.cpp)
target_link_libraries(module_test ${Mruby_LIBRARIES} ${CPPUNIT_LIBRARIES})
add_test(NAME module_test COMMAND ./module_test module_test.xml)

Что я могу сделать, чтобы правильно использовать ссылку cmake на cppunit?

...