c - 如何将参数从 Makefile 传递给程序?

标签 c makefile directory parameter-passing

<分区>

我想将 Makefile 的目录传递给一个函数。

例如:

生成文件

$(DIR) = makefile 目录

程序

int main(int argc,char argv[]) char 目录 = argv[1]

我该怎么做?

编辑 澄清。我希望我的应用程序在我编译它的目录之外工作。

最佳答案

在编译时传递符号是通过 -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";
}

可以查看this similar question , 和 see here关于 D 标志。

关于c - 如何将参数从 Makefile 传递给程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48261350/

相关文章:

来自字符串快捷方式的 C 字符

windows - 在 Make 和 windows 中使用环境变量形成路径

LINUX CP : I need to copy all files from one directory to another without copying any sub-directories

javascript - JS > FTP > 网页目录 > 文件列表

c - 在c中以恒定时间从数组中删除3D点

c - 如何从原始堆栈复制堆栈

c - 如何释放子线程中的内存?

linux - 由于 "missing separator"无法运行 make 文件

python - 如何使用 Makefile 组合单元测试结果?

Wix - 根据条件安装目录