我想将Makefile的目录传递给函数。
例如:
生成文件
$(DIR) = makefile directory
程序
int main(int argc,char argv[])
char directory = argv[1]
我该怎么做?
EDIT Clarificaion。我希望我的应用程序在我编译它的目录之外工作。
答案 0 :(得分:0)
在编译时传递符号是使用-D选项完成的 (例如C ++,但你可以轻松转置到C)。您可以只定义符号,也可以给它一个值(这就是你想要的)。
DIR=$(shell pwd)
mytarget:
@echo "DIRECTORY=$(DIR)"
$(CXX) mysource.cpp -D"DIRECTORY=$(DIR)" -o mysource
然后,在源文件中,符号DIRECTORY
将保留路径。要检查这一点,您需要一个额外的技巧(称为"双重扩展"):
#define STR1(x) #x
#define STR(x) STR1(x)
#include <iostream>
int main()
{
std::cout << "directory is " << STR(DIRECTORY) << "\n";
}
您可以查看关于D标志的this similar question和see here。
答案 1 :(得分:0)
如果您需要传递的目录是静态的(即始终相同),您可以使用-D
C编译器选项:
cc -DDIRECTORY=/home/user/...
在您的C源代码中,您可以使用DIRECTORY
。