我需要有条件地执行一些make规则,只要安装的Python大于某个版本(比如说2.5)。 我以为我可以做一些像执行: python -c 'import sys; print int(sys.version_info >= (2,5))' 然后使用输出(如果可以,则为'1',否则为'0')在ifeq make语句中。 在一个简单的bash shell脚本中,它只是: MY_VAR=`python -c 'import sys; print int(sys.version_info >= (2,5))'` 但是这在Makefile中不起作用。 有什么build议么? 我可以使用任何其他明智的解决方法来实现这一点。
我通过PuTTY和WinSCP连接到我大学的小型Linux集群,使用后者传输文件,并与前者编译和运行。 到目前为止,我的工作是在大学的实验室进行的,但今天我在家里做了一些工作,产生了一个有趣的警告。 我上传了一个完整的文件夹,运行make命令后,我把它作为输出的最后一行: make:警告:检测到时钟歪斜。 您的构build可能不完整。 生成的二进制文件正常工作,在构build过程中似乎没有任何其他意外的错误。 我似乎能够通过上传一些新的/replace文件(我在本地编辑一切,然后上传新版本)后build立触发错误,所以我想知道是否是一样简单的文件修改时间不匹配? 还是更关心一些? 那么,我应该担心吗? 我如何解决/防止这个?
我在C / C ++上编码并使用(GNU)Makefile来编译代码。 我可以用cmake做同样的事情,并得到一个MakeFile。 不过,我不明白使用Makefile和cmake编译代码有什么区别。
几乎所有我见过的Java项目都使用Maven或Ant。 他们是很好的工具,我认为任何项目都可以使用它们。 但是发生了什么? 它用于各种非Java项目,并可以轻松处理Java。 当然,如果你使用Windows,你必须下载make.exe,但Ant和Maven也不能使用JDK。 与Java一起使用时,是否存在一些基本缺陷? 仅仅是因为Ant和Maven是用Java编写的?
在我的makefile中,我有一个variables'NDK_PROJECT_PATH',我的问题是如何编译时打印出来? 我读取显示“$ PATH”string的文件回显 ,我试着: @echo $(NDK_PROJECT_PATH) @echo $(value NDK_PROJECT_PATH) 两者都给我 "build-local.mk:102: *** missing separator. Stop." 任何人都知道为什么它不为我工作?
快速的问题:编译器标志是什么让g ++能够产生多个自己的实例,以便更快地编译大型项目(例如,一个多核CPU的4个源文件)? 非常感谢。
我试图构buildGNU grep,当我运行make时,我得到: [snip] /bin/bash: line 9: makeinfo: command not found 什么是makeinfo,我如何得到它? (这是Ubuntu,如果它有所作为)
我有我的项目以下的生成文件,我想configuration它的发布和debugging版本。 在我的代码中,我有很多#ifdef DEBUGmacros,所以只需要设置这个macros并将-g3 -gdwarf2标志添加到编译器。 我怎样才能做到这一点? $(CC) = g++ -g3 -gdwarf2 $(cc) = gcc -g3 -gdwarf2 all: executable executable: CommandParser.tab.o CommandParser.yy.o Command.o g++ -g -o output CommandParser.yy.o CommandParser.tab.o Command.o -lfl CommandParser.yy.o: CommandParser.l flex -o CommandParser.yy.c CommandParser.l gcc -g -c CommandParser.yy.c CommandParser.tab.o: CommandParser.y bison -d CommandParser.y g++ -g -c CommandParser.tab.c Command.o: Command.cpp g++ -g -c Command.cpp clean: […]
在Unix中,我可以在目录中运行“make”,而不用先到那个目录cd?
我想要执行以下命令: ./a.out 1 ./a.out 2 ./a.out 3 ./a.out 4 . . . and so on 如何把这个东西写成一个Makefile的循环?