Skip to content

Fix Ceres inclusion and path export#422

Merged
jprestwo merged 4 commits intodevelfrom
include-fuse-core-link-libraries
Mar 6, 2026
Merged

Fix Ceres inclusion and path export#422
jprestwo merged 4 commits intodevelfrom
include-fuse-core-link-libraries

Conversation

@jprestwo
Copy link
Contributor

@jprestwo jprestwo commented Mar 6, 2026

Ceres is referenced in fuse header files and the existing way it was being included in fuse_core did not export the include paths for Ceres which breaks downstream packages when they include fuse_core headers.

This was only exposed through the per-package builds since the existing merged builds get lucky that all the include dirs are merged together.

Ceres is referenced in fuse header files and the existing way it was
being included in fuse_core did not export the include paths for
Ceres which breaks downstream packages when they include fuse_core
headers.

This was only exposed through the per-package builds since the
existing merged builds get lucky that all the include dirs are
merged together.
Copy link
Contributor

@svwilliams svwilliams left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I want to be really careful here. fuse is a public, open-source repo. I don't want to break anything for official builds of ROS1, end of life though it may be. Do these changes work with older versions of Ceres (2.0, 2.1, etc) and Ubuntu? Should I make a devel branch specific to Ubuntu Jammy and/or Noble?

@jprestwo
Copy link
Contributor Author

jprestwo commented Mar 6, 2026

I want to be really careful here. fuse is a public, open-source repo. I don't want to break anything for official builds of ROS1, end of life though it may be. Do these changes work with older versions of Ceres (2.0, 2.1, etc) and Ubuntu? Should I make a devel branch specific to Ubuntu Jammy and/or Noble?

@svwilliams I'm unsure about older versions. But at the high level I think fuse was flat out broken anyways regarding this. I guess everyone out there does --merge-install?

The core issue is that ceres itself doesn't export the proper variables, or at least not INCLUDE_DIRS.

Also, is this fork public? I don't see that it is...
Edit: I'm not well informed ^^^. Its indeed public 🤣

@jprestwo
Copy link
Contributor Author

jprestwo commented Mar 6, 2026

Also this bit specifically really is the correct way to do things:

 PUBLIC
    Ceres::ceres
    ${catkin_LIBRARIES}

There are headers in fuse_core which reference ceres headers, so these need to be defined as public otherwise anything including the fuse_core header won't be able to find the ceres headers. I think the big question (even for me) is about pulling in the include directories in somewhat of a non-standard fashion (i.e. not simply using ceres_INCLUDE_DIRS)

jprestwo added 2 commits March 6, 2026 09:28
In case INTERFACE_INCLUDE_DIRS isn't a valid property we can revert
back to the existing behavior when no include dirs are set.
@jprestwo jprestwo merged commit 023e907 into devel Mar 6, 2026
3 of 4 checks passed
@jprestwo jprestwo deleted the include-fuse-core-link-libraries branch March 6, 2026 20:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

4 participants