project(mex) ################################################################################ # MATLAB dependencies and options ################################################################################ find_package(Matlab REQUIRED COMPONENTS MEX_COMPILER MX_LIBRARY ENG_LIBRARY) # output in source dir /mex set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}) set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}) set(CMAKE_SHARED_LIBRARY_SUFFIX ".${Matlab_MEX_EXTENSION}") set(CMAKE_SHARED_LIBRARY_PREFIX) set(CMAKE_SHARED_LIBRARY_CXX_FLAGS) set(CMAKE_POSITION_INDEPENDENT_CODE ON) ################################################################################ # Build MEX files ################################################################################ file(GLOB SOURCE_FILES *.cpp) foreach (FILE ${SOURCE_FILES}) get_filename_component(MEX_OUTPUT ${FILE} NAME_WE) message(STATUS "MEX: ${FILE} --> ${MEX_OUTPUT}") add_library(${MEX_OUTPUT} SHARED ${FILE}) if (MSVC) set_target_properties(${MEX_OUTPUT} PROPERTIES LINK_FLAGS "/export:mexFunction") endif () target_link_libraries(${MEX_OUTPUT} ${I_LIBS}) target_link_libraries(${MEX_OUTPUT} PUBLIC shell-energy_static) target_link_libraries(${MEX_OUTPUT} PUBLIC igl::core igl::matlab) target_link_libraries(${MEX_OUTPUT} PUBLIC ${Matlab_LIBRARIES}) target_include_directories(${MEX_OUTPUT} PUBLIC ${Matlab_INCLUDE_DIRS}) endforeach ()