diff --git a/src/config/Config.inc.in b/src/config/Config.inc.in index 6ffce32155c2a9f1d8a9851ae7095d8a2ee22d6b..b4739b647b5290b3392ad69361a83f84e6c0d87e 100644 --- a/src/config/Config.inc.in +++ b/src/config/Config.inc.in @@ -28,8 +28,18 @@ namespace PLMD { namespace config { +// This is a fix to allow conda to correctly replace paths in binary files. +// These variables should not be static or they will be optimized away! +// I guess the compiler thinks that they could be replaced from outside +// (even though they are const) and thus cannot optimize them. +const char* plumed_root="@PLUMED_ROOT@"; +const char* plumed_soext="@SOEXT@"; +const char* plumed_htmldir="@htmldir@"; +const char* plumed_includedir="@includedir@"; +const char* plumed_program_name="@program_name@"; + std::string getSoExt() { - return "@SOEXT@"; + return plumed_soext; } bool isInstalled() { @@ -40,7 +50,7 @@ std::string getPlumedRoot() { char *env = std::getenv("PLUMED_ROOT"); std::string ss; if( env == NULL) { - ss="@PLUMED_ROOT@"; + ss=plumed_root; } else { ss=std::string( env ); } @@ -52,7 +62,7 @@ std::string getPlumedHtmldir() { char *env = std::getenv("PLUMED_HTMLDIR"); std::string ss; if( env == NULL) { - ss="@htmldir@"; + ss=plumed_htmldir; } else { ss=std::string( env ); } @@ -64,7 +74,7 @@ std::string getPlumedIncludedir() { char *env = std::getenv("PLUMED_INCLUDEDIR"); std::string ss; if( env == NULL) { - ss="@includedir@"; + ss=plumed_includedir; } else { ss=std::string( env ); } @@ -76,7 +86,7 @@ std::string getPlumedProgramName() { char *env = std::getenv("PLUMED_PROGRAM_NAME"); std::string ss; if( env == NULL) { - ss="@program_name@"; + ss=plumed_program_name; } else { ss=std::string( env ); }