diff --git a/software/mza/cmake/targets/libminizinc_gecode.cmake b/software/mza/cmake/targets/libminizinc_gecode.cmake index 6d2ec26..e92a33d 100644 --- a/software/mza/cmake/targets/libminizinc_gecode.cmake +++ b/software/mza/cmake/targets/libminizinc_gecode.cmake @@ -21,6 +21,17 @@ if(GECODE_FOUND AND USE_GECODE) target_include_directories(minizinc_gecode PRIVATE "${GECODE_INCLUDE_DIRS}") add_dependencies(minizinc_gecode minizinc_parser) + # Workaround to force CMake to link in the correct order + target_link_libraries(Gecode::Support INTERFACE ${CMAKE_THREAD_LIBS_INIT}) + target_link_libraries(Gecode::Kernel INTERFACE Gecode::Support) + target_link_libraries(Gecode::Search INTERFACE Gecode::Kernel) + target_link_libraries(Gecode::Int INTERFACE Gecode::Kernel) + target_link_libraries(Gecode::Set INTERFACE Gecode::Int) + target_link_libraries(Gecode::Float INTERFACE Gecode::Int) + target_link_libraries(Gecode::Minimodel INTERFACE Gecode::Int Gecode::Set Gecode::Float Gecode::Search) + target_link_libraries(Gecode::Driver INTERFACE Gecode::Int) + target_link_libraries(Gecode::Flatzinc INTERFACE Gecode::Minimodel Gecode::Driver) + ### Setup correct compilation into the MiniZinc library target_compile_definitions(mzn PRIVATE HAS_GECODE) target_sources(mzn PRIVATE $) diff --git a/software/mza/cmake/targets/libmza.cmake b/software/mza/cmake/targets/libmza.cmake index 24be745..bd0dd27 100644 --- a/software/mza/cmake/targets/libmza.cmake +++ b/software/mza/cmake/targets/libmza.cmake @@ -3,6 +3,13 @@ if(GECODE_FOUND AND USE_GECODE) lib/c_interface.cpp include/minizinc/c_interface.h ) - target_link_libraries(mza mzn) + + install( + TARGETS mza + EXPORT libminizincTargets + RUNTIME DESTINATION bin + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib + ) endif()