如您所知,c / c ++中的macro__FILE__包含文件的路径,从中编译它。 例如:
$COMMAND
但是当我尝试使用gradle进行编译时,它会输出我文件的完整路径,例如:
java -version
我想预编译macro__FILE__只包含内部项目路径但不完整。
Gradle文件:
gcc test.c -o test
./test
test.c
gcc myFolder/test.c -o test
./test
myFolder/test.c
test.c的:
home/usr/myFolder/test.c.
答案 0 :(得分:3)
不幸的是,由于gradle如何调用编译器,这是预期的。如果您只想获得相对项目路径,可以执行类似
的操作#include <stdio.h>
void main(void)
{
printf("%s\n", __FILE__ + PROJECT_PATH_LEN);
}
然后将PROJECT_PATH_LEN
的适当定义添加到file("./").absolutePath.length
(请参阅gradle documentation on how to add defines)。
答案 1 :(得分:0)
__FILE__
的行为很明确:它是一个宏,它以C字符串常量的形式扩展为当前输入文件的名称。
这是预处理器用来打开文件的路径。
你得到了整条道路的事实。