diff --git a/CMakeLists.txt b/CMakeLists.txt index afd7bb94..a8ccb883 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -267,15 +267,18 @@ endif (R_LANG) # Create Static Library # ---------------------------------------------- - +include(GNUInstallDirs) +include(FindPkgConfig) +pkg_search_module(qdldl REQUIRED IMPORTED_TARGET qdldl) # Add linear system solvers cumulative library add_subdirectory(lin_sys) +if(NOT BUILD_SHARED_LIBS) # Static library add_library (osqpstatic STATIC ${osqp_src} ${osqp_headers} ${linsys_solvers}) # Give same name to static library output set_target_properties(osqpstatic PROPERTIES OUTPUT_NAME osqp) - +target_link_libraries(osqpstatic PkgConfig::qdldl) # Include directories for linear system solvers target_include_directories(osqpstatic PRIVATE ${linsys_solvers_includes}) @@ -294,7 +297,7 @@ install(TARGETS osqpstatic ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}") - +endif() # Install Headers # ---------------------------------------------- @@ -310,10 +313,11 @@ endif (MATLAB) # If we are building Python/Matlab/R interface: # - do not build shared library # - do not build demo -if (NOT PYTHON AND NOT MATLAB AND NOT R_LANG AND NOT EMBEDDED) +if (BUILD_SHARED_LIBS) # Create osqp shared library # NB: Add all the linear system solvers here add_library (osqp SHARED ${osqp_src} ${osqp_headers} ${linsys_solvers}) + target_link_libraries(osqp PkgConfig::qdldl) # Include directories for linear system solvers target_include_directories(osqp PRIVATE ${linsys_solvers_includes}) @@ -331,10 +335,9 @@ if (NOT PYTHON AND NOT MATLAB AND NOT R_LANG AND NOT EMBEDDED) RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}") # Create demo executable (linked to static library) - add_executable (osqp_demo ${PROJECT_SOURCE_DIR}/examples/osqp_demo.c) - target_link_libraries (osqp_demo osqpstatic) -endif (NOT PYTHON AND NOT MATLAB AND NOT R_LANG AND NOT EMBEDDED) + +endif (BUILD_SHARED_LIBS) # Create CMake packages for the build directory # ---------------------------------------------- diff --git a/lin_sys/direct/CMakeLists.txt b/lin_sys/direct/CMakeLists.txt index c36c375a..2942cc9f 100644 --- a/lin_sys/direct/CMakeLists.txt +++ b/lin_sys/direct/CMakeLists.txt @@ -6,7 +6,7 @@ add_subdirectory(qdldl) # Need to add qdldlobject only here because it cannot be # included in another object library such as linsys_qdldl -set(direct_linsys_solvers $ $) +set(direct_linsys_solvers $ ) # NB. The second directory is added because we need to include the "qdldl_types.h" file in "qdldl_interface.h" set(direct_linsys_solvers_includes diff --git a/lin_sys/direct/qdldl/CMakeLists.txt b/lin_sys/direct/qdldl/CMakeLists.txt index d78c4a38..b3429a12 100644 --- a/lin_sys/direct/qdldl/CMakeLists.txt +++ b/lin_sys/direct/qdldl/CMakeLists.txt @@ -1,5 +1,4 @@ # Add qdldl -add_subdirectory(qdldl_sources) if(NOT DEFINED EMBEDDED) @@ -39,3 +38,4 @@ set(qdldl_interface_src # Create object library for linear system solver interface add_library(linsys_qdldl OBJECT ${qdldl_interface_src}) target_include_directories(linsys_qdldl PRIVATE ${qdldl_interface_includes} ${PROJECT_SOURCE_DIR}/include) +target_link_libraries(linsys_qdldl PkgConfig::qdldl)