Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
E
eigenpy
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Guilhem Saurel
eigenpy
Commits
a8080d89
Commit
a8080d89
authored
4 years ago
by
Guilhem Saurel
Browse files
Options
Downloads
Patches
Plain Diff
[CMake] multi python setup
parent
96e4f9cd
No related branches found
Branches containing commit
No related tags found
No related merge requests found
Pipeline
#11601
failed
4 years ago
Stage: test
Changes
4
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
CMakeLists.txt
+67
-61
67 additions, 61 deletions
CMakeLists.txt
cmake
+1
-1
1 addition, 1 deletion
cmake
python/CMakeLists.txt
+4
-12
4 additions, 12 deletions
python/CMakeLists.txt
unittest/CMakeLists.txt
+9
-9
9 additions, 9 deletions
unittest/CMakeLists.txt
with
81 additions
and
83 deletions
CMakeLists.txt
+
67
−
61
View file @
a8080d89
#
# Copyright (c) 2014-20
19
CNRS
# Copyright (c) 2014-20
20
CNRS
# Copyright (c) 2018-2020 INRIA
#
CMAKE_MINIMUM_REQUIRED
(
VERSION
2.6
)
CMAKE_MINIMUM_REQUIRED
(
VERSION
3.1
)
SET
(
PROJECT_NAME eigenpy
)
SET
(
PROJECT_DESCRIPTION
"Bindings between Numpy and Eigen using Boost.Python"
)
SET
(
PROJECT_URL
"http://github.com/stack-of-tasks/eigenpy"
)
SET
(
PROJECT_USE_CMAKE_EXPORT TRUE
)
SET
(
PROJECT_USE_KEYWORD_LINK_LIBRARIES TRUE
)
SET
(
PROJECT_CUSTOM_HEADER_EXTENSION
"hpp"
)
# Check if the submodule cmake have been initialized
...
...
@@ -35,16 +34,9 @@ STRING(REPLACE "-pedantic" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS})
# If needed, fix CMake policy for APPLE systems
APPLY_DEFAULT_APPLE_CONFIGURATION
()
IF
(
WIN32
)
SET
(
LINK copy_if_different
)
ELSE
(
WIN32
)
SET
(
LINK create_symlink
)
ENDIF
(
WIN32
)
# ----------------------------------------------------
# --- OPTIONS ---------------------------------------
# ----------------------------------------------------
OPTION
(
INSTALL_DOCUMENTATION
"Generate and install the documentation"
FALSE
)
OPTION
(
SUFFIX_SO_VERSION
"Suffix library name with its version"
OFF
)
IF
(
DEFINED BUILD_UNIT_TESTS
)
...
...
@@ -54,19 +46,35 @@ IF(DEFINED BUILD_UNIT_TESTS)
SET
(
BUILD_TESTING
${
BUILD_UNIT_TESTS
}
)
ENDIF
(
DEFINED BUILD_UNIT_TESTS
)
FINDPYTHON
()
FIND_NUMPY
()
IF
(
WIN32
)
LINK_DIRECTORIES
(
${
PYTHON_LIBRARY_DIRS
}
)
ENDIF
(
WIN32
)
SET
(
PYWRAP
"
${
PROJECT_NAME
}
_pywrap"
)
# ----------------------------------------------------
# --- DEPENDENCIES -----------------------------------
# ----------------------------------------------------
ADD_PROJECT_DEPENDENCY
(
Eigen3 REQUIRED PKG_CONFIG_REQUIRES
"eigen3 >= 3.0.5"
)
ADD_PROJECT_DEPENDENCY
(
Eigen3 REQUIRED
)
IF
(
BUILD_PYTHON_INTERFACE
)
FINDPYTHON
()
FIND_NUMPY
()
SEARCH_FOR_BOOST_PYTHON
(
REQUIRED
)
ENDIF
(
BUILD_PYTHON_INTERFACE
)
# ----------------------------------------------------
# --- INTERFACE --------------------------------------
# ----------------------------------------------------
ADD_LIBRARY
(
${
PROJECT_NAME
}
INTERFACE
)
TARGET_INCLUDE_DIRECTORIES
(
${
PROJECT_NAME
}
SYSTEM INTERFACE
${
Boost_INCLUDE_DIRS
}
${
EIGEN3_INCLUDE_DIR
}
INTERFACE
$<INSTALL_INTERFACE:include>
)
SEARCH_FOR_BOOST_PYTHON
(
)
INSTALL
(
TARGETS
${
PROJECT_NAME
}
EXPORT
${
TARGETS_EXPORT_NAME
}
DESTINATION lib
)
# ----------------------------------------------------
# --- INCLUDE ----------------------------------------
...
...
@@ -143,7 +151,7 @@ SET(${PROJECT_NAME}_SOLVERS_SOURCES
SET
(
${
PROJECT_NAME
}
_DECOMPOSITIONS_SOURCES
src/decompositions/decompositions.cpp
)
SET
(
${
PROJECT_NAME
}
_SOURCES
${${
PROJECT_NAME
}
_SOLVERS_SOURCES
}
${${
PROJECT_NAME
}
_DECOMPOSITIONS_SOURCES
}
...
...
@@ -166,52 +174,50 @@ SET(${PROJECT_NAME}_SOURCES
src/version.cpp
)
ADD_LIBRARY
(
${
PROJECT_NAME
}
SHARED
${${
PROJECT_NAME
}
_SOURCES
}
${${
PROJECT_NAME
}
_HEADERS
}
)
TARGET_INCLUDE_DIRECTORIES
(
${
PROJECT_NAME
}
SYSTEM PUBLIC
${
Boost_INCLUDE_DIRS
}
${
EIGEN3_INCLUDE_DIR
}
${
PYTHON_INCLUDE_DIRS
}
${
NUMPY_INCLUDE_DIRS
}
$<BUILD_INTERFACE:
${
CMAKE_CURRENT_BINARY_DIR
}
/include>
$<INSTALL_INTERFACE:include>
)
IF
(
SUFFIX_SO_VERSION
)
SET_TARGET_PROPERTIES
(
${
PROJECT_NAME
}
PROPERTIES SOVERSION
${
PROJECT_VERSION
}
)
ENDIF
(
SUFFIX_SO_VERSION
)
IF
(
NOT WIN32
)
TARGET_COMPILE_OPTIONS
(
${
PROJECT_NAME
}
PRIVATE $<$<CXX_COMPILER_ID:MSVC>:-bigobj>
"-Wno-conversion"
)
ELSE
()
TARGET_COMPILE_OPTIONS
(
${
PROJECT_NAME
}
PRIVATE $<$<CXX_COMPILER_ID:MSVC>:-bigobj>
)
ENDIF
()
TARGET_LINK_BOOST_PYTHON
(
${
PROJECT_NAME
}
PUBLIC
)
INSTALL
(
TARGETS
${
PROJECT_NAME
}
EXPORT
${
TARGETS_EXPORT_NAME
}
PUBLIC_HEADER DESTINATION
${
CMAKE_INSTALL_FULL_INCLUDEDIR
}
INCLUDES DESTINATION
${
CMAKE_INSTALL_FULL_INCLUDEDIR
}
LIBRARY DESTINATION
${
CMAKE_INSTALL_FULL_LIBDIR
}
ARCHIVE DESTINATION
${
CMAKE_INSTALL_FULL_LIBDIR
}
RUNTIME DESTINATION
${
CMAKE_INSTALL_FULL_BINDIR
}
)
ADD_HEADER_GROUP
(
${
PROJECT_NAME
}
_HEADERS
)
ADD_SOURCE_GROUP
(
${
PROJECT_NAME
}
_SOURCES
)
# Install package for ROS
install
(
FILES package.xml DESTINATION share/eigenpy
)
# ----------------------------------------------------
# --- PYTHON LIBRARY ---------------------------------
# ----------------------------------------------------
ADD_SUBDIRECTORY
(
python
)
# ----------------------------------------------------
# --- UNIT TEST --------------------------------------
# ----------------------------------------------------
ADD_SUBDIRECTORY
(
unittest
)
IF
(
BUILD_PYTHON_INTERFACE
)
ADD_LIBRARY
(
${
PY_PROJECT_NAME
}
SHARED
${${
PROJECT_NAME
}
_SOURCES
}
${${
PROJECT_NAME
}
_HEADERS
}
)
TARGET_LINK_LIBRARIES
(
${
PY_PROJECT_NAME
}
PUBLIC
${
PROJECT_NAME
}
)
TARGET_INCLUDE_DIRECTORIES
(
${
PY_PROJECT_NAME
}
SYSTEM PUBLIC
${
PYTHON_INCLUDE_DIR
}
${
NUMPY_INCLUDE_DIRS
}
)
IF
(
SUFFIX_SO_VERSION
)
SET_TARGET_PROPERTIES
(
${
PY_PROJECT_NAME
}
PROPERTIES SOVERSION
${
PROJECT_VERSION
}
)
ENDIF
(
SUFFIX_SO_VERSION
)
IF
(
NOT WIN32
)
TARGET_COMPILE_OPTIONS
(
${
PY_PROJECT_NAME
}
PRIVATE $<$<CXX_COMPILER_ID:MSVC>:-bigobj>
"-Wno-conversion"
)
ELSE
()
TARGET_COMPILE_OPTIONS
(
${
PY_PROJECT_NAME
}
PRIVATE $<$<CXX_COMPILER_ID:MSVC>:-bigobj>
)
ENDIF
()
TARGET_LINK_BOOST_PYTHON
(
${
PY_PROJECT_NAME
}
PRIVATE
)
INSTALL
(
TARGETS
${
PY_PROJECT_NAME
}
EXPORT
${
TARGETS_EXPORT_PY_NAME
}
PUBLIC_HEADER DESTINATION
${
CMAKE_INSTALL_FULL_INCLUDEDIR
}
INCLUDES DESTINATION
${
CMAKE_INSTALL_FULL_INCLUDEDIR
}
LIBRARY DESTINATION
${
CMAKE_INSTALL_FULL_LIBDIR
}
ARCHIVE DESTINATION
${
CMAKE_INSTALL_FULL_LIBDIR
}
RUNTIME DESTINATION
${
CMAKE_INSTALL_FULL_BINDIR
}
)
PROJECT_INSTALL_COMPONENT
(
${
PY_PROJECT_NAME
}
)
# ----------------------------------------------------
# --- PYTHON LIBRARY ---------------------------------
# ----------------------------------------------------
ADD_SUBDIRECTORY
(
python
)
# ----------------------------------------------------
# --- UNIT TEST --------------------------------------
# ----------------------------------------------------
ADD_SUBDIRECTORY
(
unittest
)
ENDIF
()
PKG_CONFIG_APPEND_LIBS
(
${
PROJECT_NAME
}
)
PKG_CONFIG_APPEND_CFLAGS
(
"-I
${
PYTHON_INCLUDE_DIRS
}
"
)
PKG_CONFIG_APPEND_CFLAGS
(
"-I
${
NUMPY_INCLUDE_DIRS
}
"
)
PKG_CONFIG_APPEND_BOOST_LIBS
(
${
BOOST_COMPONENTS
}
)
IF
(
NOT INSTALL_PYTHON_INTERFACE_ONLY
)
# Install package for ROS
install
(
FILES package.xml DESTINATION
"share/
${
PROJECT_NAME
}
"
)
ENDIF
(
)
This diff is collapsed.
Click to expand it.
cmake
@
d5fd2cc1
Compare
f4fca276
...
d5fd2cc1
Subproject commit
f4fca276f9feaaea1ef9b866df32f8a263a35501
Subproject commit
d5fd2cc10afc094e9cb1d4db3051cb5e4d437ac2
This diff is collapsed.
Click to expand it.
python/CMakeLists.txt
+
4
−
12
View file @
a8080d89
...
...
@@ -3,17 +3,12 @@
#
# --- LIBRARY --- #
SET
(
PYWRAP
${
PROJECT_NAME
}
_pywrap
)
SET
(
PYWRAP
${
PYWRAP
}
PARENT_SCOPE
)
MAKE_DIRECTORY
(
"
${${
PROJECT_NAME
}
_BINARY_DIR
}
/python/
${
PROJECT_NAME
}
"
)
ADD_CUSTOM_TARGET
(
python
)
SET_TARGET_PROPERTIES
(
python PROPERTIES EXCLUDE_FROM_DEFAULT_BUILD True
)
ADD_LIBRARY
(
${
PYWRAP
}
SHARED main.cpp
)
ADD_DEPENDENCIES
(
python
${
PYWRAP
}
)
TARGET_LINK_LIBRARIES
(
${
PYWRAP
}
PUBLIC
${
PROJECT_NAME
}
)
TARGET_LINK_LIBRARIES
(
${
PYWRAP
}
PUBLIC
${
PY_
PROJECT_NAME
}
)
# BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS spews conversion warnings from int to long unsigned int.
# Unfortunately, using literals does not work in a macro. As such, this turns them off for the entire wrapper:
IF
(
NOT WIN32
)
...
...
@@ -26,7 +21,7 @@ ELSE()
ENDIF
()
SET_TARGET_PROPERTIES
(
${
PYWRAP
}
PROPERTIES
PROPERTIES
PREFIX
""
SUFFIX
${
PYTHON_EXT_SUFFIX
}
OUTPUT_NAME
"
${
PROJECT_NAME
}
"
...
...
@@ -35,14 +30,11 @@ SET_TARGET_PROPERTIES(${PYWRAP}
INSTALL
(
TARGETS
${
PYWRAP
}
DESTINATION
${${
PYWRAP
}
_INSTALL_DIR
}
)
# --- INSTALL SCRIPTS
# --- INSTALL SCRIPTS
SET
(
PYTHON_FILES
__init__.py
)
FOREACH
(
python
${
PYTHON_FILES
}
)
INSTALL
(
FILES
"
${
CMAKE_CURRENT_SOURCE_DIR
}
/eigenpy/
${
python
}
"
DESTINATION
${${
PYWRAP
}
_INSTALL_DIR
}
)
PYTHON_INSTALL_ON_SITE
(
"
${
PROJECT_NAME
}
"
"
${
python
}
"
)
ENDFOREACH
(
python
)
This diff is collapsed.
Click to expand it.
unittest/CMakeLists.txt
+
9
−
9
View file @
a8080d89
#
# Copyright (c) 2014-20
19
CNRS
# Copyright (c) 2014-20
20
CNRS
# Copyright (c) 2018-2020 INRIA
#
...
...
@@ -12,7 +12,7 @@ MACRO(ADD_LIB_UNIT_TEST test)
ADD_LIBRARY
(
${
test
}
SHARED EXCLUDE_FROM_ALL
${
test
}
)
ENDIF
(
BUILD_TESTING
)
TARGET_LINK_LIBRARIES
(
${
test
}
PUBLIC
${
PROJECT_NAME
}
)
TARGET_LINK_LIBRARIES
(
${
test
}
PUBLIC
${
PY_
PROJECT_NAME
}
)
SET_TARGET_PROPERTIES
(
${
test
}
PROPERTIES PREFIX
""
)
SET_TARGET_PROPERTIES
(
${
test
}
PROPERTIES SUFFIX
${
PYTHON_EXT_SUFFIX
}
)
...
...
@@ -41,23 +41,23 @@ ADD_PYTHON_UNIT_TEST("py-return-by-ref" "unittest/python/test_return_by_ref.py"
ADD_PYTHON_UNIT_TEST
(
"py-eigen-ref"
"unittest/python/test_eigen_ref.py"
"unittest"
)
ADD_PYTHON_UNIT_TEST
(
"py-user-type"
"unittest/python/test_user_type.py"
"unittest"
)
ADD_PYTHON_UNIT_TEST
(
"py-switch"
"unittest/python/test_switch.py"
"python
/eigenpy
;unittest"
)
ADD_PYTHON_UNIT_TEST
(
"py-switch"
"unittest/python/test_switch.py"
"python;unittest"
)
SET_TESTS_PROPERTIES
(
"py-switch"
PROPERTIES DEPENDS
${
PYWRAP
}
)
ADD_PYTHON_UNIT_TEST
(
"py-dimensions"
"unittest/python/test_dimensions.py"
"python
/eigenpy
;unittest"
)
ADD_PYTHON_UNIT_TEST
(
"py-dimensions"
"unittest/python/test_dimensions.py"
"python;unittest"
)
SET_TESTS_PROPERTIES
(
"py-dimensions"
PROPERTIES DEPENDS
${
PYWRAP
}
)
ADD_PYTHON_UNIT_TEST
(
"py-version"
"unittest/python/test_version.py"
"python
/eigenpy
;unittest"
)
ADD_PYTHON_UNIT_TEST
(
"py-version"
"unittest/python/test_version.py"
"python;unittest"
)
SET_TESTS_PROPERTIES
(
"py-version"
PROPERTIES DEPENDS
${
PYWRAP
}
)
ADD_PYTHON_UNIT_TEST
(
"py-eigen-solver"
"unittest/python/test_eigen_solver.py"
"python
/eigenpy
;unittest"
)
ADD_PYTHON_UNIT_TEST
(
"py-eigen-solver"
"unittest/python/test_eigen_solver.py"
"python;unittest"
)
SET_TESTS_PROPERTIES
(
"py-eigen-solver"
PROPERTIES DEPENDS
${
PYWRAP
}
)
ADD_PYTHON_UNIT_TEST
(
"py-self-adjoint-eigen-solver"
"unittest/python/test_self_adjoint_eigen_solver.py"
"python
/eigenpy
;unittest"
)
ADD_PYTHON_UNIT_TEST
(
"py-self-adjoint-eigen-solver"
"unittest/python/test_self_adjoint_eigen_solver.py"
"python;unittest"
)
SET_TESTS_PROPERTIES
(
"py-self-adjoint-eigen-solver"
PROPERTIES DEPENDS
${
PYWRAP
}
)
ADD_PYTHON_UNIT_TEST
(
"py-LLT"
"unittest/python/test_LLT.py"
"python
/eigenpy
;unittest"
)
ADD_PYTHON_UNIT_TEST
(
"py-LLT"
"unittest/python/test_LLT.py"
"python;unittest"
)
SET_TESTS_PROPERTIES
(
"py-LLT"
PROPERTIES DEPENDS
${
PYWRAP
}
)
ADD_PYTHON_UNIT_TEST
(
"py-LDLT"
"unittest/python/test_LDLT.py"
"python
/eigenpy
;unittest"
)
ADD_PYTHON_UNIT_TEST
(
"py-LDLT"
"unittest/python/test_LDLT.py"
"python;unittest"
)
SET_TESTS_PROPERTIES
(
"py-LDLT"
PROPERTIES DEPENDS
${
PYWRAP
}
)
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment