gpt4 book ai didi

ruby - 如何根据操作系统控制从 extconf.rb 生成的输出?

转载 作者:太空宇宙 更新时间:2023-11-03 16:08:04 25 4
gpt4 key购买 nike

我正在编写一个 Ruby C 扩展。我将在 Windows 和 OSX 下编译它。

我无法解决的问题是控制 makefile 和所有其他生成文件的放置位置。

我的 extconf.rb 文件有根据操作系统准备 makefile 的条件语句 - 所以我对它们都使用了一个。

我希望当我在 OSX 下编译时,它都放在一个 osx 文件夹中,类似地放在 Windows 下的一个 win 文件夹下,以便将它们全部分开。

现在所有文件都生成在与我的源代码相同的文件夹中。

(我对 C 和编译应用程序非常陌生。如果我遗漏了一些明显的东西,我深表歉意。)

我可以写一个批处理来在之后移动文件,但我发现如果可以在生成期间完成它会更干净。

最佳答案

您可以在 makefile 中的规则之前放置一个条件。像这样的东西:

OS := $(shell uname)
ifeq ($(OS),Darwin)
FOLDER := /some_path/osx_folder
else
FOLDER := /some_other_path/win_folder
endif

编辑:
FOLDER 只是一个变量;稍后将在 makefile 中使用它,如下所示:

$(FOLDER)/main: $(FOLDER)/main.o $(FOLDER)/foo.o
blah blah link $^ together to build $@

$(FOLDER)/%.o: $(SOURCE_DIRECTORY)/%.c
blah blah compile $< to build $@

(这是一个粗略的例子——如果你有很多文件要处理,更优雅的解决方案是可能的。)

关于ruby - 如何根据操作系统控制从 extconf.rb 生成的输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9533190/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com