Comments (6)
It would definitely be good if this CMake function would have an option to choose the install destination of the executables (either bin
or lib/<pkgname>
). For ROS packages the second option looks like the better default, too. If we want to keep the default in this package as bin
we could also introduce a ROS specific package (like ament_cmake_ros
) but I don't feel strongly about a separate package for this.
from ament_cmake.
ok, so how about we change the default for executables to lib/${PROJECT_NAME}
and provide and option called INSTALL_TO_PATH
or something that installs executables how they are installed currently?
from ament_cmake.
Ah, I noticed in the FHS standard that "Applications may use a single subdirectory under /usr/lib. If an application uses a subdirectory, all architecture-dependent data exclusively used by the application must be placed within that subdirectory."
Does this then mean that if the executables are being installed to lib/${PROJECT_NAME}
, the libraries should be installed there too? This is not consistent with how we've been changing things for other ROS 2 packages so I may have misinterpreted 'exclusively used by the application'.
from ament_cmake.
Libraries should still go into lib
. This is how we do it in ROS 1 and I don't think we should change that.
from ament_cmake.
Ah, I noticed in the FHS standard that "Applications may use a single subdirectory under /usr/lib. If an application uses a subdirectory, all architecture-dependent data exclusively used by the application must be placed within that subdirectory."
I think the key word there is "exclusively", so if you have a shared library that only your application uses, it would be put there. Since we mostly make things that could be reused by other packages, those shared libraries still belong in the top-level lib
. At least that's how I interpret it.
from ament_cmake.
closed bu #97, thanks @wjwwood and @dirk-thomas for the input
from ament_cmake.
Related Issues (20)
- Question about `ament_export_include_directories(include)` and `${PACKAGE_INCLUDE_DIRS}`. HOT 3
- Exporting dependencies of header-only (interface) libraries to downstream packages HOT 3
- ament_pack_build_configuration is very slow for many dependencies HOT 4
- PRIVATE option to ament_target_dependencies does not work HOT 1
- Add support for gmock in ament_cmake_auto
- Enable compulsory sign-off for ament organization or ament_cmake repo? HOT 3
- Backport `ament_auto_add_gmock` to humble HOT 3
- Fix compiler warnings related to gtest/gmock (backport #408 to humble) HOT 2
- ament cmake core fails on unexpected keyword argument 'encoding' HOT 1
- Installing Python3.12 causes import error: No module named 'distutils' HOT 3
- ament_export_dependencies can't export all PkgConfig projects found in CMake HOT 2
- Support propagation of version compatibility to consuming libraries HOT 2
- BUG: ament_cmake_core doesn't work in CMake 3.5 anymore but doesn't declare a minimum cmake version to use it HOT 7
- ament_cmake_python: Update ament_python_install_package() to allow installing more files into an existing package. HOT 9
- Corrupt ament_cmake_symlink_install.cmake may be generated HOT 1
- Ament Cmake doesnt extend LD_LIBRARY_PATH for libTorch (Ros2 Humble) HOT 1
- Issue with ament_cmake_gen_version_h install path in ros2 build farm HOT 2
- Please release to Rolling and Jazzy! HOT 4
- Should I use ament_export_dependencies for PRIVATE dependency? HOT 1
- perf: deep packages are swarmed with duplicated libraries in `ament_target_dependencies()` HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ament_cmake.