|
|
Paths may be absolute, relative to the current directory or relative to a certain ArmarX package. Furthermore, they might contain environment variables, which need to be resolved before providing the path as a parameter to a function. Several convenience functions for handling paths already exist in ArmarX. Here, you can find some of them.
Add ArmarXCore to the DEPENDENCIES section of the respective armarx_add_component() or the DEPENDENCIES_PUBLIC section of armarx_add_library() statement in the CMakeLists.txt next to your code file. Most likely, it is already listed there.
| Source | |
|---|---|
| include | #include <ArmarXCore/core/system/ArmarXDataPath.h> |
| dependecy | ArmarXCore |
| API documentation | armarx::ArmarXDataPath |
Recommended, rather comprehensive solution: Replace environment variables and ~ as in ResolveHomePath, and convert to an absolute path.
| Method | |
|---|---|
| signature | std::string armarx::ArmarXDataPath::resolvePath(const std::string& path, bool verbose) |
Replace not only environment variables as in ReplaceEnvVars, but also ~ at the beginning of the path.
| Method | |
|---|---|
| signature | static void armarx::ArmarXDataPath::ResolveHomePath(std::string& path) |
Replace only environment variables, like $ARMARX_WORKSPACE or $HOME, by their value.
| Method | |
|---|---|
| signature | static bool armarx::ArmarXDataPath::ReplaceEnvVars(std::string& string) |
Further functions exist, see armarx::ArmarXDataPath.
| Source | |
|---|---|
| include | #include <ArmarXCore/core/PackagePath.h> |
| dependecy | ArmarXCore |
| API documentation | armarx::PackagePath |
Create a package path, i.e., a path that is relative to a specified ArmarX package. This can be useful, e.g., to refer to files inside a package's data directory.
| Method | |
|---|---|
| signature | PackagePath(const std::string& package_name, const std::filesystem::path& rel_path) |
Resolve a package path, to get a plain std::filesystem::path.
| Method | |
|---|---|
| signature | std::filesystem::path armarx::PackagePath::toSystemPath() const |
| signature | static std::filesystem::path armarx::PackagePath::toSystemPath(const data::PackagePath& pp) |
Send a package path via ice (used, e.g., for interfaces of components).
| Method | |
|---|---|
| signature | armarx::data::PackagePath armarx::PackagePath::serialize() const |
For a flexible, but more lengthy usage, the armarx::CMakePackageFinder is available, as described in How to locate package data files.
| Source | |
|---|---|
| include | #include <ArmarXCore/core/system/cmake/CMakePackageFinder.h> |
| dependecy | ArmarXCore |
| API documentation | armarx::CMakePackageFinder |
Code example: Assume a file being located at ${Package_DIR}/data/MyArmarXPackage/myDirectory/myDataFile.txt. The package name is MyArmarXPackage. The "relative path" in the context of ArmarX PackagePath is defined as the path relative to the package's data/MyArmarXPackage directory, i.e., myDirectory/myDataFile.txt in this example.