Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
FindIPOpt.cmake 1.36 KiB
include(FindPackageHandleStandardArgs)

#find_package(PkgConfig REQUIRED)
#pkg_check_modules(IPOPT ipopt)

# some versions of Ipopt need the DL library
find_library(DL_LIBRARY dl)

find_path(IPOPT_INCLUDE_DIR
  NAMES "IpNLP.hpp"
  PATH_SUFFIXES "include" "include/coin"
)

find_library(IPOPT_LIBRARY
  NAMES ipopt
  PATH_SUFFIXES "lib"
)

# If you want to want to use other linear solver
find_library(HSL_LIBRARY
  NAMES hsl coinhsl
  PATH_SUFFIXES "lib"
)

find_package_handle_standard_args(hsl DEFAULT_MSG HSL_LIBRARY)
find_package_handle_standard_args(dl DEFAULT_MSG DL_LIBRARY)
find_package_handle_standard_args(Ipopt DEFAULT_MSG IPOPT_INCLUDE_DIR IPOPT_LIBRARY)

if(IPOPT_FOUND)
    set(HAVE_IPOPT ENABLE_IPOPT)
    set(DUNE_IPOPT_CFLAGS "-I${IPOPT_INCLUDE_DIR} -DENABLE_IPOPT=1 -DHAVE_CSTDDEF=1")
    set_property(GLOBAL APPEND PROPERTY ALL_PKG_FLAGS "-I${IPOPT_INCLUDE_DIR}")
    set(IPOPT_LIBRARY ${IPOPT_LIBRARY})
    if (HSL_FOUND)
        set (IPOPT_LIBRARY ${HSL_LIBRARY} ${IPOPT_LIBRARY})
    endif(HSL_FOUND)
    if (DL_FOUND)
        set (IPOPT_LIBRARY ${DL_LIBRARY} ${IPOPT_LIBRARY})
    endif(DL_FOUND)

    # register all related flags
    dune_register_package_flags(COMPILE_DEFINITIONS "ENABLE_IPOPT=1" "HAVE_CSTDDEF=1"
                                LIBRARIES "${IPOPT_LIBRARY}"
                                INCLUDE_DIRS "${IPOPT_INCLUDE_DIR}")
endif(IPOPT_FOUND)