Tag: makefile

源文件中的子目录

我有一个使用Makefilebuild立的C ++库。 直到最近,所有的源代码都在一个目录中,Makefile也是这样做的 SOURCES = $(wildcard *.cpp) 哪些工作正常。 现在我已经添加了一些子目录中的源代码,比如subdir 。 我知道我可以做到这一点 SOURCES = $(wildcard *.cpp) $(wildcard subdir/*.cpp) 但我正在寻找一种方法来避免手动指定subdir ,也就是使wildcard查看子目录,或以某种方式生成子目录列表,并用几个wildcard函数来扩展它。 在这一点上,有一个非recursion解决scheme(即只扩展到第一级)就可以了。 我还没有find任何东西 – 我最好的猜测是使用find -type d列出子目录,但感觉像是一个黑客。 有没有内置的方法来做到这一点?

链接器错误:“链接器input文件未使用,因为链接没有完成”,未定义的引用该文件中的函数

我在链接我的文件时遇到了麻烦。 基本上,我的程序包括: 主程序gen1 。 gen1 – 接收input发送到str2value进行处理,输出结果str2value ,使用“tokenizer”确定input到令牌的处理方式,确定对每个令牌执行什么样的处理,并将它们传递给str2num或str2cmd 。 然后它返回一个结果数组。 str2num – 做一些处理 str2cmd – 同上 author.py – 一个str2cmd.h文件cmdTable.h生成str2cmd.c和str2cmd.h的python脚本。 我很确定我有我的包括权利,我已经检查了几次。 我也检查了在标题中没有#ifndef错误的条件。 这是我的Makefile: #CPP = g++ -lserial CPP = g++ -DTESTMODE C= gcc DEFINES = LURC CFLAGS = -Wall -fshort-enums -D$(DEFINES) PROJECTFILES = gen1.cpp str2value.o STR2VALUEFILES = str2value.cpp str2cmd.o str2num.o tokenizer.o str2value.h gen1 : $(PROJECTFILES) $(CPP) […]

自动为多核机器设置作业(-j)标志?

我在一个拥有大量内核的机器上有一个Makefile,但是编译我的项目时似乎总是忘记写-jX ,并且它比预期的要长。 有什么办法可以通过环境variables或其他持久化configuration文件来设置-j标志,这样make就可以在这台机器上自动执行多个作业?

在Mac OS X 10.8.2上安装Ruby

我已经提到了安装Ruby on Rails – Mac OS Lion,并且遵循Alain Beauvois的回复 ,几乎所有的东西都变了。 唯一的区别是我使用1.9.3而不是1.9.2。 我创build了.bash_profile ,甚至确保在那里open -e .bash_profile ,甚至添加了Alain Beauvois所述的行。 但现在似乎是这个问题是我得到这个错误: Error running 'make', please read /usr/local/rvm/log/ruby-1.9.3-p374/make.log There has been an error while running make. Halting the installation. 引用的日志包含这个: [2013-02-02 21:41:52] make CC = clang LD = ld LDSHARED = clang -dynamic -bundle CFLAGS = -O3 -ggdb -Wall -Wextra […]

在构buildTwitter Bootstrap时,让jshint忽略某些文件

当使用Twitter Bootstrap与其他第三方JS库(例如WordPress“Twenty Twelve”主题中的html5.js时,我经常遇到这个问题,由于jshint (或者以前的TB版本中的jslint )会导致构build失败由于第三方JS库的错误,例如 \n################################################## Building Bootstrap… ##################################################\n js/html5.js: line 3, col 122, Expected ')' to match '(' from line 3 and instead saw ','. js/html5.js: line 3, col 140, Expected an identifier and instead saw ')'. js/html5.js: line 4, col 101, eval is evil. js/html5.js: line 6, col 369, Confusing use of '!'. […]

从命令行查找Microsoft C ++编译器的版本(对于makefiles)

我必须错过一些非常明显的东西,但由于某种原因,Microsoft C ++编译器(cl.exe)的命令行版本在运行时似乎不支持报告其版本。 我们需要这个编写makefile来检查我们工具的用户已经安装的编译器版本(他们得到的makefile中包含自己编译的代码,所以我们无法控制它们的编译器版本)。 在gcc中,您只需提供选项-v或–version即可获得打印的完美版本string。 在cl.exe中,出现-v错误。 我已阅读MSDN文档和编译器联机帮助,我找不到打印编译器版本的开关。 烦人的是,当编译器启动的时候,你总是得到这个版本……但是你似乎不能启动编译器只是为了从中获得版本。 使用qmake查找编译器供应商/版本似乎相似,但只处理gcc的简单情况。 如果有问题,我正在尝试使用VC ++ Express 2005。 我希望它不会,因为检测编译器版本是最好的独立于编译器版本的方式:) 更新后,回复: 不带任何参数运行cl.exe会打印其版本和一些帮助文本。 在vc版本中,这看起来是最便捷的版本。 然后你必须parsing一个多行输出,但这并不难。 我们最终做到了这一点,并且工作。

Cygwin出错:***目标模式不包含'%'

我((重新)build设,使用cygwin make.exe版本时,得到了这个错误:3.81。 Error : *** target pattern contains no `%'.

Linuxconfiguration/ make,–prefix?

忍受我,这个不是很容易解释… 我正在尝试configure , make make install Xfce make install到我的buildroot构build目录中。 当我正在使用configuration –prefix=/home/me/somefolder/mybuild/output/target 所以它build立到正确的文件夹,但是当它被压缩和运行,我从各种configuration文件,它正在寻找文件 /home/me/somefolder/mybuild/output/target (这当然不存在) 如何设置要构build的文件夹,然后为要使用的configuration文件设置不同的根目录?

找不到CMAKE_MAKE_PROGRAM

我已经与Cmake的绳索到了尽头; 它有这么多的潜力,但我似乎无法find基本的系统工具(即“make”)才能正常工作。 症状 Cmake和Cmake GUI产生以下(删除CMakeCache.txt文件后): Processing top-level CMakelists.txt for project swb CMake Error: CMake was unable to find a build program corresponding to "MinGW Makefiles". CMAKE_MAKE_PROGRAM is not set. You probably need to select a different build tool. 我正在关注在这个问题中find“make”,但是,我也遇到了许多与CMake无法find库和其他实用程序文件(链接器,nm,ar等)相同的问题。 下面列出的技术似乎使CMake能够在Linux下运行时find这些文件。 系统 Windows 7(64位); MinGW(32位/ 64位)的多个版本; Cmake 2.8.4; NONSTANDARD安装MinGW的位置(c:/ MinGW-32)。 我曾试过的东西 1)CMakelists.txt在文件的前10行内包含“SET(CMAKE_MAKE_PROGRAM c:/MinGW-32/bin/make.exe FORCE)”。 2)以前版本的CMakelists.txt包含: find_program(CMAKE_MAKE_PROGRAM […]

GNU使产量“命令在第一个目标之前开始”错误

在我的makefile中,我想检查一个库的存在并给出一个信息错误信息。 我创build了一个条件,当文件没有find时应该退出make过程: 9: ifeq ($(${JSONLIBPATH}),) 10: JSONLIBPATH = ${ALTJSONLIBDIR}/${LIBJSON} 11: endif 12: ifeq ($(${JSONLIBPATH}),) 13: $(error JSON library is not found. Please install libjson before building) 14: endif 我的makefile卡在第13行: Makefile:13: *** commands commence before first target. Stop. 在第13行后,我的makefile有它的目标。 我试图把这个条件块放入一个目标(例如,一个名为isJSONLibraryInstalled的目标),但是这不能正确执行。 在处理目标之前,我将如何检查文件的存在并处理错误情况? 道歉,如果这是一个愚蠢的问题。