package An official xmake package repository
https://xrepo.xmake.io/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
88 lines
3.4 KiB
88 lines
3.4 KiB
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 $<TARGET_OBJECTS:linsys_qdldl> $<TARGET_OBJECTS:qdldlobject>) |
|
+set(direct_linsys_solvers $<TARGET_OBJECTS:linsys_qdldl> ) |
|
|
|
# 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)
|
|
|