-
Notifications
You must be signed in to change notification settings - Fork 403
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Install includes to include/${PROJECT_NAME}
#1194
Comments
FYI: @sloretz |
sloretz
added a commit
to sloretz/iceoryx
that referenced
this issue
Mar 2, 2022
Adds a CMake option APPEND_PROJECT_NAME_TO_INCLUDEDIR defaulting to ON that appends ${PROJECT_NAME} to the directory headers are installed. This is to support ros2/ros2#1150. See also: eclipse-cyclonedds/cyclonedds#1169 When using ROS 2 and Colcon it's possible to have two versions of a package installed: typically one from the debian packages (like ros-[rosdistro]-iceoryx-binding-c) and another in a from-source workspace. In Colcon terms this is called "overriding a package", and the /opt/ros/[rosdistro] folder would be called the underlay while the from-source workspace would be called the overlay. A user would do this when they want to try a newer version of a package without building everything from source. When two or more packages install their headers to the same directory in an underlay, it becomes possible for packages in the overlay to accidentally find the headers of an overridden package in the underlay. This can cause build failures or undefined behavior at runtime depending on the differences between the headers in the overridden and overriding packages. The issue is avoided if a package installs its headers to a unique folder using ${PROJECT_NAME}. Signed-off-by: Shane Loretz <shane.loretz@gmail.com>
21 tasks
sloretz
added a commit
to sloretz/iceoryx
that referenced
this issue
Mar 3, 2022
This installs headers to a unique include directory by default. The directory name is `include/vX.Y.Z` where `X.Y.Z` is the current version of iceoryx. The behavior is controllable using a new CMake option MAKE_UNIQUE_INCLUDEDIR. When `ON` the new behavior is used. When `OFF` headers are installed to `include` as they were before. Signed-off-by: Shane Loretz <shane.loretz@gmail.com>
sloretz
added a commit
to sloretz/iceoryx
that referenced
this issue
Mar 3, 2022
Signed-off-by: Shane Loretz <shane.loretz@gmail.com>
dkroenke
added a commit
to ApexAI/iceoryx
that referenced
this issue
Mar 4, 2022
…teway Signed-off-by: Dietrich Krönke <dietrich.kroenke@apex.ai>
21 tasks
elBoberido
added a commit
that referenced
this issue
Mar 4, 2022
…ct_name iox-#1194 Install includes to include/${PROJECT_NAME}
dkroenke
added a commit
that referenced
this issue
Mar 4, 2022
…que-dds-gateway-introspection iox-#1194 Unique include path for introspection dds gateway
mossmaurice
added a commit
to ApexAI/iceoryx
that referenced
this issue
Jul 16, 2022
Signed-off-by: Simon Hoinkis <simon.hoinkis@apex.ai>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Brief feature description
Adds a CMake option APPEND_PROJECT_NAME_TO_INCLUDEDIR defaulting to ON
that appends ${PROJECT_NAME} to the directory headers are installed. This is to support ros2/ros2#1150.
Pretty similar to eclipse-cyclonedds/cyclonedds#1169
When using ROS 2 and Colcon it's possible to have two versions of a package installed: typically one from the debian packages (like ros-[rosdistro]-iceoryx-binding-c) and another in a from-source workspace. In Colcon terms this is called "overriding a package", and the /opt/ros/[rosdistro] folder would be called the underlay while the from-source workspace would be called the overlay. A user would do this when they want to try a newer version of a package without building everything from source.
When two or more packages install their headers to the same directory in an underlay, it becomes possible for packages in the overlay to accidentally find the headers of an overridden package in the underlay. This can cause build failures or undefined behavior at runtime depending on the differences between the headers in the overridden and overriding packages. The exact conditions this happens are a little complicated, so I'll skip writing it out here. In ROS 2 we're solving the issue by making every package install its headers to a unique folder using ${PROJECT_NAME}.
The text was updated successfully, but these errors were encountered: