Skip to content
Snippets Groups Projects
Commit 6c67f887 authored by Fabian Reister's avatar Fabian Reister
Browse files

use environment variables to discover cmake packages

parent 2678e636
No related branches found
No related tags found
1 merge request!221CMake package finder: use environment variables instead of global cmake registry
......@@ -50,10 +50,14 @@
#include <memory>
#include <ctime>
#include <mutex>
#include <cstdlib>
#define SCRIPT_PATH "ArmarXCore/core/system/cmake/FindPackageX.cmake"
#define CACHE_PATH "/ArmarXCMakeCache_" + (getenv("USER")?getenv("USER"):"DUMMY_USER")
extern char ** environ;
namespace armarx
{
std::string getHomeDir()
......@@ -435,23 +439,41 @@ namespace armarx
{
std::vector<std::string> result;
using namespace std::filesystem;
auto home = getHomeDir();
if (!home.empty())
{
path p = path {home} / ".cmake" / "packages";
if (is_directory(p))
char ** env;
env = environ;
for (; *env; ++env) {
const std::string envVar(*env);
ARMARX_DEBUG << "Retrieved environment variable " << envVar;
const std::vector<std::string> elements = simox::alg::split(envVar, "=");
if(not (elements.size() == 2))
{
for (const path& entry : boost::make_iterator_range(directory_iterator(p), {}))
continue;
}
const std::string& envVarName = elements.front();
const std::string& envVarValue = elements.back();
if(simox::alg::ends_with(envVarName, "_DIR"))
{
const std::string packageName = simox::alg::remove_suffix(envVarName, "_DIR");
auto pckFinder = CMakePackageFinder {packageName, envVarValue, true};
ARMARX_DEBUG << "Package name: " << packageName;
ARMARX_DEBUG << "Path: " << envVarValue;
// check if this is really a package
if (pckFinder.packageFound() && !pckFinder.getBuildDir().empty())
{
const std::string pkg = entry.filename().string();
auto pckFinder = CMakePackageFinder {pkg, "", true};
if (pckFinder.packageFound() && !pckFinder.getBuildDir().empty())
{
result.push_back(pkg);
}
ARMARX_VERBOSE << "Found package " << packageName;
result.push_back(packageName);
}
}
}
return result;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment