是否可以使用CMAKE在make install上重新编译一些源文件

时间:2014-09-09 15:47:00

标签: c makefile cmake

让我解释一下这个问题。我有一个C代码,其中一个C字符串中包含其他插件的搜索路径。只要程序保留在cmake的构建目录中,字符串就应该包含构建目录中的plugin文件夹。例如

char *plugindir = "/home/.../myproject/build/plugins:/usr/share/myproject/plugins"; 

如果程序是通过make install安装的,我想将此字符串更改为

char *plugindir = "/usr/share/myproject/plugins"; 

并在安装之前重新编译/重新链接程序。如何使用CMAKE实现这种行为?

1 个答案:

答案 0 :(得分:0)

有很多解决方案,我可以告诉你2:

  1. 使用配置文件,因此plugindir不是硬编码的,而是从配置文件中动态获取的。 这是更好的解决方案,但你可以找到。这涉及使用某些库,如this one

  2. 使用#directives。这是一个更简单的解决方案在源文件中添加如下内容:

    #ifdef DIST

    char *plugindir = "/usr/share/myproject/plugins";

    #else

    char *plugindir = "/home/.../myproject/build/plugins:/usr/share/myproject/plugins";

    #endif

  3. 你可以使用DIST预处理器变量(在che C代码或Makefile中)来区分开发或安装"代码版本。