【问题标题】:How can I copy files and create a directory in Makefile?如何在 Makefile 中复制文件并创建目录?
【发布时间】:2018-10-12 13:49:34
【问题描述】:

来自 Makefile:

需要从../lib复制一个文件,并从当前.创建一个名为test的目录

另一个文件并从当前命名为test2创建另一个目录

有这个,但我不知道怎么做,我没有从互联网上找到任何有用的信息

COPY_FILES = $(DIR)../lib/libmy.a $(DIR)/my.h
DIR =
all: $(COPY_FILES)
$(DIR)/libmy.a: 

【问题讨论】:

  • 流程的哪一部分不起作用?你在哪个部分苦苦挣扎?您的目标目录DIR 被声明为空,并且您在设置/声明它之前还引用了$(DIR)
  • @Corion 不知道如何创建目录并将文件复制到我从 Makefile 创建的目录中
  • A Makefile 主要是 shell 命令,因此您使用 mkdir 创建目录并使用 cp 复制文件。也许还可以从gnu.org/software/make/manual 了解 Makefile
  • 为了清楚起见,考虑编辑您的问题。
  • 在尝试使用变量进行泛化之前,先获取一个可以工作的简单 Makefile。只需执行all:\n\tmkdir test\ncp ../lib/libmy.a .。当你想出调用它并让它做你想做的事情时,然后开始担心让依赖关系正确并使其更通用。

标签: c linux bash makefile


【解决方案1】:

在我的一个 Makefile 中,我有以下规则:

$(BUILD_DIRECTORY)/$(LIBRARY): $(BUILD_DIRECTORY)
    @clang -c $(COMMON_INCLUDE_PATHS) $(LIBRARY_COMPILER_FLAGS) $(LIBRARY_SOURCES)
    @ar rcs $(LIBRARY) *.o
    @mv $(LIBRARY) $(BUILD_DIRECTORY)
    @rm -f *.o

$(BUILD_DIRECTORY):
    @mkdir $(BUILD_DIRECTORY)

$(BUILD_DIRECTORY)$(BUILD_DIRECTORY)/$(LIBRARY) 的依赖项。

如果不想用规则来创建构建目录,可以使用下面的方式来创建目录:

mkdir -p <directory>

-p 选项是在目录已存在时忽略错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-07
    • 2020-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多