使用gcc获取没有二进制文件路径的文件名

时间:2016-12-09 10:21:40

标签: c gcc c-preprocessor

我在使用GCC构建的C项目中使用预处理程序指令__BASE_FILE__。问题是两台不同计算机构建的二进制文件必须完全相同,因此路径不能出现在生成的二进制文件中。

我无法找到一种方法来缩小预处理过程中__BASE_FILE__(包含文件的完整路径)返回的字符串。有没有办法做到这一点?

此字符串在宏中使用,如下所示:

#define MY_MACRO() \
{ \
    int file_name_size = sizeof(__BASE_NAME__); \
    char* file_name = __BASE_NAME__; \
    \
    a_function_that_use_these_variables(file_name, file_name_size); \
}

所以我希望__BASE_FILE__只包含文件名,而不是路径。

2 个答案:

答案 0 :(得分:1)

  

如何将-D__BASE_FILE_NAME __ = $(notdir $<)添加到Makefile中的$(CC)食谱中(将第一个先决条件的基本名称定义为宏 BASE_FILE_NAME )?

此解决方案有效。

答案 1 :(得分:0)

您可以使用strrchr查找'/'basename以获取运行时的文件名