让我解释一下这个问题。我有一个C代码,其中一个C字符串中包含其他插件的搜索路径。只要程序保留在cmake的构建目录中,字符串就应该包含构建目录中的plugin文件夹。例如
char *plugindir = "/home/.../myproject/build/plugins:/usr/share/myproject/plugins";
如果程序是通过make install
安装的,我想将此字符串更改为
char *plugindir = "/usr/share/myproject/plugins";
并在安装之前重新编译/重新链接程序。如何使用CMAKE实现这种行为?
答案 0 :(得分:0)
有很多解决方案,我可以告诉你2:
使用配置文件,因此plugindir不是硬编码的,而是从配置文件中动态获取的。 这是更好的解决方案,但你可以找到。这涉及使用某些库,如this one。
使用#directives。这是一个更简单的解决方案在源文件中添加如下内容:
#ifdef DIST
char *plugindir = "/usr/share/myproject/plugins";
#else
char *plugindir = "/home/.../myproject/build/plugins:/usr/share/myproject/plugins";
#endif
你可以使用DIST预处理器变量(在che C代码或Makefile中)来区分开发或安装"代码版本。