当前位置: 首页 > 知识库问答 >
问题:

安装过程中,如何使用一些外部工具创建适当的make文件?

方昊阳
2023-03-14

我必须“释放”一些C代码。基本上,这段代码需要编译一个C 11编译器和一些外部库(特别是gmp、gsl、mpfr库)。

因此,基本上要使用的makefile必须在使用之前正确配置(因为实际的结构取决于编译器的安装位置和其他库的位置)。

有没有办法在使用makefile和make命令之前“预配置”makefile?

共有1个答案

万俟浩
2023-03-14

Autoconf和Automake是重型工具,可以很好地完成您所描述的工作,但可能有更简单的解决方案。首先,确保在适当的地方使用变量

%.o:%.c
    $(CC) $(CFLAGS) $^ -o $@ 

program: $(OBJS)
    $(LD) $(LDFLAGS) ...

然后填充CC和LDFLAGS。您可以要求用户在命令行上覆盖它们,如下所示:

make CC=/opt/toolchains/xxx/yyy/gcc

请注意,即使在makefile中定义了CC,在命令行中指定的值也将优先。或者,您可以创建一个可编辑的配置文件,并在makefile中创建如下行:

 CONFIG_FILE := .configure
 TOOLCHAIN_DIR := $(sed -n "s/^\s*TOOLCHAIN:\s*\(\S*\).*$$/\1/p" < $(CONFIG_FILE))
 LIB_DIRS := $(sed -n "s/^\s*LIBS:\s*\(\S*\).*$$/\1/p" < $(CONFIG_FILE))

 CC:=$(TOOLCHAIN_DIR)/gcc
 LDFLAGS += $(addprefix -L,$(LIB_DIRS))

除此之外,您还可以在makefile中创建一个confiure规则,根据用户输入生成. confiure文件。如果您需要超越这一点,您可能需要考虑autoconf。

 类似资料:
  • 问题内容: 我正在将中型Java应用程序的构建从Ant迁移到Maven。我可以轻松迁移基本的构建内容,但是我也想从Maven构建中创建安装程序包。最简单的方法是通过Ant插件调用原始的Ant脚本,但我想也许我应该先看看Maven的支持。 我需要为不同的平台创建几个不同的安装程序: Windows 32/64位 Linux 32/64位 MacOS 32/64位 现在对于Linux,我认为我们只有一

  • 问题内容: 我需要制作一个可以用外部jar文件编译和执行我的类的makefile。我有4个类;。 我还需要包括..这是我的制作文件 谢谢 问题答案: 您是指在Linux OS中制作Makefile吗? 检查一下-Makemakefile指南 http://www.cs.swarthmore.edu/~newhall/unixhelp/howto_makefiles.html 或这个-例子 http

  • 以前我使用Izpack安装我的Java应用程序,当用户想要安装新版本时,他们只需重新安装到相同的位置(c“/Program files/jthink/jaikoz”),这将用较新的文件替换较旧的文件,用户不需要先卸载旧版本。 我现在已经为应用程序的最新版本构建了一个使用JPackage(现在是Java,JDK14的一部分)的安装程序,这将继续安装到相同的位置。问题是因为JPackage强制了一个新

  • Gitea 大量使用了 Make 工具来自动执行任务并改进开发,本文将介绍如何安装 Make。 在 Linux 环境下 可以使用包管理工具来安装 Make。 Ubuntu/Debian 环境,执行以下命令: sudo apt-get install make Fedora/RHEL/CentOS,执行以下命令: sudo yum install make 在 Windows 环境下 您可以参照

  • 问题内容: 我正在尝试在javafx中创建自定义工具栏。该工具栏应该能够在其表面的中心,左侧和右侧(三个部分)显示控件。问题是我不知道要实现这一目标。我阅读了许多与此问题相关的提示,但它们对我不起作用,或者我做错了事… 无论如何,我写了几种方法,它们代表了实现工具栏的不同方法,但它们均无法正常工作。这是您的尝试: 使用HBox的Hgrow属性作为spring。没用 2.它适用于左右部分,但是如何定

  • 所以我在POM文件中有wsimport作为插件: 启动后,我会收到以下警告: [警告]src-resolve:无法将名称“checkshortprobintinforequest”解析为(n)个“type definition”组件。 文件第53行:/d://dev/test-prj/irule/pravoru/src/main/resources/wsdl/webservicesvc.wsdl#