草庐IT

Makefile

全部标签

只能在 makefile 中使用一个目标文件

所以我正在尝试为交叉编译代码制作自己的make文件。我正在使用通配符从一个文件夹中获取C文件,但是当我在csources文件夹中有多个C文件时,它不会创建目标文件。#Macroslinux_compiler=gccwin32_compiler=i686-w64-mingw32-gccwin64_compiler=x86_64-w64-mingw32-gccprogram=maincfolder=csourcesheaderfolder=hsourcesobjectfolder=osourcescsources=$(wildcard$(cfolder)/*.c)hsources=$(wi

linux - Eclipse makefile 构建速度很慢......是什么原因造成的?

我们是狂热的Eclipse粉丝——太棒了!但是我们有大约40个c++项目(并且还在增加),构建所有这些项目,当所有项目都是最新的时,大约需要半分钟(总计)。如果我只是简单地创建一个bash脚本来对所有40个项目执行“makeall”,它的执行时间将不到一秒。Eclipse似乎每次都想通过执行以下命令对正确的工具进行测试:g++-E-P-v-dD/myfolder/.metada/.plugins/org.eclipse.cdt.make.core/specs.cpp其中specs.cpp是一个空文件。这一步似乎占用了大部分构建时间。任何人对此有何见解?有什么方法可以告诉Eclipse信

linux - Makefile 中的 $${HOME} 或 ${HOME}?

$catMakefileall:echoVARis${HOME}echoVARis$${HOME}给予$makeechoVARis/home/abcVARis/home/abcechoVARis${HOME}VARis/home/abc为什么echoVARis${HOME}语法在Makefile中有效?我想,要使用shell变量,您必须使用$${HOME}} 最佳答案 是也不是。最好使用$$来明确。然而,thereisaspecialruleforenvironmentvariables:Variablesinmakecancome

linux - 如何在 makefile 中运行 ./configure 脚本

我尝试了以下方法:$(shell./libpng/configure)./libpng/configure在这种情况下all:build_jpegbuild_libpng#JPEGBUILDRULESbuild_jpeg:make-C./jpeg#LIBPNGBUILDRULESbuild_libpng:$(shell./libpng/configure)make-C./libpng我该怎么做才能使这项工作成功? 最佳答案 当你执行./libpng/configure时会发生什么?确保配置脚本是可执行的!(chmod+x./libp

linux - 在 Linux 2.6 驱动程序模块 makefile 中创建调试目标

我正在尝试能够在命令行执行“makedebug”,它将使用-DDEBUG_OUTPUT定义构建我的驱动程序模块,这将导致某些代码段被编译。在2.4内核makefile中,这很容易。我只是创建一个调试:目标并在该目标的cc编译命令参数中包含“-DDEBUG_OUTPUT”。很简单。不幸的是(对我来说),2.6完全改变了模块的编译方式,我似乎只能找到琐碎的“全部”和“干净”示例,它们没有显示在编译时添加自定义定义。我试过这个:debug:make-C$(KERNEL_DIR)SUBDIRS='pwd'-DDEBUG_OUTPUTmodules并收到来自make的投诉。我也试过:.PHONY

linux - 为什么可执行文件不接收 Makefile 中导出的变量?

我有一个makefile,我在其中导出将由可执行文件接收的变量,但令人惊讶的是可执行文件没有接收导出的值。请帮帮我。31test:32@echo33@echo"TestingElectricFence."34@echo"Afterthelasttest,itshouldprintthatthetesthasPASSED."35./eftest36./tstheap307237exportEF_ERRTRACK_START=338exportEF_ERRTRACK_END=539./time-interval-measurement-test40@echo41@echo"Electric

linux - Makefile 在 foreach 循环中使用 ifeq 条件

我有很多变量叫做allow_xxx其中xxx是一个特征。我想在我的makefile中使用所有允许的值创建一个变量。这是我尝试做的:allow_feat1:=1allow_feat2:=1allow_feat3:=1list_features:=feat1feat2feat3allowed:=$(foreachV,$(list_features),$(ifeq($(allow_$V),1),$V))这行不通...知道如何正确执行此操作吗?谢谢! 最佳答案 没有ifeq函数这样的东西,它只是一个条件指令。使用if和filter代替:al

linux - Makefile 变量替换显然没有完成,即使 := is used in declaration

我有一个主内核模块,其他内核模块与之通信。我已经构建了这样的模块(概念上):mainmodule/|\drivers/||\driver1|\driver2\driver3因为这些是内核模块,我需要像这样编译它们:make-C/lib/modules/$(shelluname-r)/buildM=$(shellpwd)modules但是,由于可以从以前的目录调用驱动程序的Makefile,因此我需要在调用其他make(linux的make)之前执行$(shellpwd)。所以Makefile现在看起来像这样:CURRENT_DIR:=$(shellpwd).PHONY:allall:$

c - Makefile 说缺少运算符

我正在尝试运行一个同时编译这些“C”程序的生成文件。CC=gccCFLAGS=-I.DEPS=queue.hall:\threadssthreadss:thread.oqueueImp.o$(CC)thread.oqueueImp.o-othreadssthread.o:thread.c$(CC)$(CFLAGS)threads.cthread.o:queueImp.c$(CC)$(CFLAGS)queueImp.cclean:rm-rf*othreadss但是返回以下错误:Makefile:8:***missingseparator.Stop.请帮我解决这个问题。我使用的是unix环

linux - F#、Linux 和 makefile

我打算将F#程序作为二进制文件和源代码分发,以便用户可以根据需要选择重新编译它。在Windows上,我了解如何执行此操作:提供.fsproj和.sln文件,VisualStudio和MSBuild都可以理解。在Linux上,C程序的传统解决方案是makefile。这取决于gcc是否可以直接使用,它一直都是。F#编译器可以安装在Linux上并在Mono下工作,所以目前为止还不错。但是,据我所知,它不会创建fsc运行编译器的场景,而是命令mono...path.../fsc.exe。这也很好,除了我不知道路径是什么。所以在我的例子中运行编译器的完整命令可以是除了我不确定fsc.exe在用户