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

标签 c makefile cmake

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

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

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

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

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

最佳答案

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

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

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

    #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/

相关文章:

c - 这个 C 程序我做错了什么?

c - 终端上的内存分配首次编译错误

c++ - 使用不正确数量的参数调用 Cmake add_executable

c++ - CMake Qt 基于 Windows 链接器问题构建

c++ - 如何在 x86_64 上交叉编译 Raspberry Pi 项目? (缺少 *.so 由于路径无效)

c++ - 使用 Microchip XC16 编译器将 foo.cpp 构建为 C 代码

c - MUMPS - 在调用 MPI_INIT 之前调用 MPI_Comm_f2c() 函数

c - 对于这些片段我们能说些什么呢?

c - Makefile - 包含库

qt - Makefile中缺少分隔符错误