Accept a dqrobotics::dqrobotics target from a parent project - #12
Merged
Merged
Conversation
A parent project that builds dqrobotics in-tree (e.g. the marinholab-sas-core Python package, which links it statically into its extension module) can now define dqrobotics::dqrobotics before add_subdirectory(sas_cpp); the find_path/find_library lookup and the imported target are only used when no such target exists. Standalone builds and the Debian packaging are unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A parent project that provides dqrobotics::dqrobotics from a non-installed target cannot export marinholab_sas_core (install(EXPORT) requires every linked target to be in an export set), and does not need to install it. The option defaults to ON, so standalone builds and the Debian packaging install exactly as before. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
mmmarinho
added a commit
to MarinhoLab/sas_py
that referenced
this pull request
Oct 1, 2026
Add dqrobotics/cpp as submodules/dqrobotics_cpp, pinned to 674eae4, the commit the required dqrobotics 26.4.0a7 Python release was built from (its cpp submodule at dqrobotics/python e8f43c1 = v26.04.0 + 7 commits). _core links it statically with hidden visibility, as working-needlemanipulation does; DQ and DQ_SerialManipulator objects are still the dqrobotics package's, through pybind11's shared type registry, so the two copies must keep the same class layouts. sas_cpp is bumped to the branch that uses a parent's dqrobotics::dqrobotics target (MarinhoLab/sas_cpp#12). Its headers no longer bring Eigen's names into scope, so sas_robot_driver_py.cpp uses Eigen::VectorXd explicitly. The workflow no longer installs the DQ Robotics PPA or builds dqrobotics on macOS and Windows, and no longer repairs the macOS and Windows wheels with delocate and delvewheel (auditwheel still sets the manylinux tag). The Docker pipeline drops the PPA and checks dqrobotics interop and that _core links no libdqrobotics. The Eigen include shim is gone: no header of the pinned dqrobotics includes <eigen3/Eigen/Dense>. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Lets a parent project build dqrobotics in-tree and hand it to sas_cpp, which the
marinholab-sas-corePython package (MarinhoLab/sas_py) needs so it can link dqrobotics statically into its extension module. Today that package links a system-installed libdqrobotics and bundles it into the wheels.Changes
find_path/find_librarylookup and the importeddqrobotics::dqroboticstarget are now insideif(NOT TARGET dqrobotics::dqrobotics). A parent project can define that target first, for example as anALIASof a staticdqroboticstarget fromadd_subdirectory(dqrobotics/cpp). When no such target exists, the lookup runs exactly as before.MARINHO_LAB_SAS_CORE_INSTALL, defaultON. It wraps the install rules and the exported CMake package. A non-importeddqroboticstarget is not in any export set, soinstall(EXPORT marinholab_sas_core-targets)stops with "requires target dqrobotics that is not in any export set". A parent that links the library into its own binary sets the option toOFF.Standalone builds, the Docker pipeline and the Debian packaging do not define the target and keep the option at
ON, so they behave exactly as before.Testing
ubuntu:nobleDocker pipeline, and the full wheel CI matrix. See the companion sas_py PR.🤖 Generated with Claude Code