cmake_minimum_required (VERSION 3.5) enable_testing() project(no_implicit_links_checks) set(MATLAB_FIND_DEBUG TRUE) if(IS_MCR) set(RUN_UNIT_TESTS FALSE) else() set(RUN_UNIT_TESTS TRUE) set(components MAIN_PROGRAM) endif() if(NOT "${MCR_ROOT}" STREQUAL "") set(Matlab_ROOT_DIR "${MCR_ROOT}") if(NOT EXISTS "${MCR_ROOT}") message(FATAL_ERROR "MCR does not exist ${MCR_ROOT}") endif() endif() find_package(Matlab REQUIRED COMPONENTS ${components}) matlab_add_mex( # target name NAME cmake_matlab_test_wrapper1 # output name OUTPUT_NAME cmake_matlab_mex1 SRC ${CMAKE_CURRENT_SOURCE_DIR}/../matlab_wrapper1.cpp DOCUMENTATION ${CMAKE_CURRENT_SOURCE_DIR}/../help_text1.m.txt NO_IMPLICIT_LINK_TO_MATLAB_LIBRARIES ) # Inspect the LINK_LIBRARIES properties to check if mex or mx are present get_target_property(MATLAB_TEST_WRAPPER1_LINK_LIBRARIES cmake_matlab_test_wrapper1 LINK_LIBRARIES) string(FIND "${MATLAB_TEST_WRAPPER1_LINK_LIBRARIES}" "mx" SEARCH_RESULT) if(NOT "${SEARCH_RESULT}" EQUAL "-1") message(FATAL_ERROR "Matlab::mx linked even if NO_IMPLICIT_LINK_TO_MATLAB_LIBRARIES was passed") endif() string(FIND "${MATLAB_TEST_WRAPPER1_LINK_LIBRARIES}" "mex" SEARCH_RESULT) if(NOT "${SEARCH_RESULT}" EQUAL "-1") message(FATAL_ERROR "Matlab::mex linked even if NO_IMPLICIT_LINK_TO_MATLAB_LIBRARIES was passed") endif() string(FIND "${MATLAB_TEST_WRAPPER1_LINK_LIBRARIES}" "MatlabEngine" SEARCH_RESULT) if(NOT "${SEARCH_RESULT}" EQUAL "-1") message(FATAL_ERROR "Matlab::MatlabEngine linked even if NO_IMPLICIT_LINK_TO_MATLAB_LIBRARIES was passed") endif() string(FIND "${MATLAB_TEST_WRAPPER1_LINK_LIBRARIES}" "MatlabDataArray" SEARCH_RESULT) if(NOT "${SEARCH_RESULT}" EQUAL "-1") message(FATAL_ERROR "Matlab::MatlabDataArray linked even if NO_IMPLICIT_LINK_TO_MATLAB_LIBRARIES was passed") endif() # Link separately with Matlab::mx and Matlab::mex to ensure that compilation # and run of the test is successful target_link_libraries(cmake_matlab_test_wrapper1 PRIVATE Matlab::mx Matlab::mex) if(RUN_UNIT_TESTS) matlab_add_unit_test( NAME ${PROJECT_NAME}_matlabtest-1 TIMEOUT 300 UNITTEST_FILE ${CMAKE_CURRENT_SOURCE_DIR}/../cmake_matlab_unit_tests1.m ADDITIONAL_PATH $ ) endif()