diff --git a/gtsam/CMakeLists.txt b/gtsam/CMakeLists.txt index 50ec1d4de..fb732ca51 100644 --- a/gtsam/CMakeLists.txt +++ b/gtsam/CMakeLists.txt @@ -94,7 +94,10 @@ if (GTSAM_BUILD_STATIC_LIBRARY) install(TARGETS gtsam-static EXPORT GTSAM-exports ARCHIVE DESTINATION lib) list(APPEND GTSAM_EXPORTED_TARGETS gtsam-static) set(GTSAM_EXPORTED_TARGETS "${GTSAM_EXPORTED_TARGETS}" PARENT_SCOPE) - set(gtsam-lib "gtsam-static") + set(gtsam-lib gtsam-static) + if(NOT GTSAM_BUILD_SHARED_LIBRARY) + set(gtsam-prefer-shared gtsam-static) + endif() endif (GTSAM_BUILD_STATIC_LIBRARY) if (GTSAM_BUILD_SHARED_LIBRARY) @@ -112,6 +115,7 @@ if (GTSAM_BUILD_SHARED_LIBRARY) if (NOT GTSAM_BUILD_STATIC_LIBRARY) set(gtsam-lib "gtsam-shared") endif() + set(gtsam-prefer-shared gtsam-shared) endif(GTSAM_BUILD_SHARED_LIBRARY) # Create the matlab toolbox for the gtsam library @@ -132,9 +136,11 @@ if (GTSAM_BUILD_WRAP) endif() # Generate, build and install toolbox - set(mexFlags "${GTSAM_BUILD_MEX_BINARY_FLAGS} ${CMAKE_CXX_FLAGS} -I${Boost_INCLUDE_DIR} -I${MEX_INCLUDE_ROOT} -I${MEX_INCLUDE_ROOT}/gtsam -I${MEX_INCLUDE_ROOT}/gtsam/base -I${MEX_INCLUDE_ROOT}/gtsam/geometry -I${MEX_INCLUDE_ROOT}/gtsam/linear -I${MEX_INCLUDE_ROOT}/gtsam/discrete -I${MEX_INCLUDE_ROOT}/gtsam/inference -I${MEX_INCLUDE_ROOT}/gtsam/nonlinear -I${MEX_INCLUDE_ROOT}/gtsam/slam -L${GTSAM_LIB_DIR} -lgtsam") - string(TOUPPER "${CMAKE_BUILD_TYPE}" cmake_build_type_toupper) - set(mexFlags "${mexFlags} -g COMPFLAGS='/c /DMATLAB_MEX_FILE ${CMAKE_CXX_FLAGS_${cmake_build_type_toupper}}'") + string(TOUPPER ${CMAKE_BUILD_TYPE} build_type_toupper) + get_target_property(gtsam_library_file ${gtsam-prefer-shared} LOCATION_${build_type_toupper}) + set(mexFlags "${GTSAM_BUILD_MEX_BINARY_FLAGS} -I${Boost_INCLUDE_DIR} -I${MEX_INCLUDE_ROOT} -I${MEX_INCLUDE_ROOT}/gtsam -I${MEX_INCLUDE_ROOT}/gtsam/base -I${MEX_INCLUDE_ROOT}/gtsam/geometry -I${MEX_INCLUDE_ROOT}/gtsam/linear -I${MEX_INCLUDE_ROOT}/gtsam/discrete -I${MEX_INCLUDE_ROOT}/gtsam/inference -I${MEX_INCLUDE_ROOT}/gtsam/nonlinear -I${MEX_INCLUDE_ROOT}/gtsam/slam ${gtsam_library_file}") + # Lots of escapes '\' here because they get eaten during subsequent calls to 'set' + set(mexFlags "${mexFlags} -g COMPFLAGS=\\\"$$COMPFLAGS ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${build_type_toupper}}\\\"") # Macro to handle details of setting up targets # FIXME: issue with dependency between wrap_gtsam and wrap_gtsam_build, only shows up on CMake 2.8.3