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