我在一台拥有大量核心的机器上有一个Makefile,但是-jX在编译我的项目时我似乎总是忘记编写它需要的时间比它应该的长.
有没有什么方法可以-j通过环境变量或其他一些持久性配置文件设置标志,以便make在这台机器上自动并行执行多个作业?
我已经用Cmake到达了绳子的尽头; 它有很大的潜力,但我似乎无法让它找到基本的系统工具(即"制造")才能发挥作用.
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.
Run Code Online (Sandbox Code Playgroud)
我正专注于在这个问题中找到"make",但是,我也遇到了很多相同的问题,CMake无法找到库和其他实用程序文件(链接器,nm,ar等).我在下面列出的技术似乎使CMake能够在Linux下运行时找到这些文件.
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
NAMES make
make.exe
DOC "Find a suitable make program for building under Windows/MinGW"
HINTS c:/MinGW-32/bin )
Run Code Online (Sandbox Code Playgroud)
3)在运行CMake或CMake-GUI之前,在cmd.exe环境变量中设置CMAKE_MAKE_PROGRAM.
4)使用标识CMAKE_MAKE_PROGRAM以及CMAKE_C_COMPILER等的"工具链"文件.
如果我使用GUI填充CMAKE_MAKE_PROGRAM变量("C:/MinGW-32/bin/make.exe"),CMake将成功创建构建文件.
如果我通过GUI识别make程序的名称,我可以让CMake工作.如何让CMake无需用户干预Windows 7(64位)/ MinGW组合即可找到我的make程序?
我想尝试GCC整个程序优化.为此,我必须立即将所有C文件传递给编译器前端.但是,我使用makefile来自动化我的构建过程,而且在makefile魔术方面我不是专家.
如果我想使用一次GCC调用来编译(甚至链接),我该如何修改makefile?
供参考 - 我的makefile如下所示:
LIBS = -lkernel32 -luser32 -lgdi32 -lopengl32
CFLAGS = -Wall
OBJ = 64bitmath.o \
monotone.o \
node_sort.o \
planesweep.o \
triangulate.o \
prim_combine.o \
welding.o \
test.o \
main.o
%.o : %.c
gcc -c $(CFLAGS) $< -o $@
test: $(OBJ)
gcc -o $@ $^ $(CFLAGS) $(LIBS)
Run Code Online (Sandbox Code Playgroud) 我一直在努力让make只编译已经编辑过的文件.但是我没有太大成功,所有文件都被重新编译.有人能解释一下为什么吗?
我的文件是:
main.c
a_functions.c
Run Code Online (Sandbox Code Playgroud)
其中main.c包含main.h 和a_functions.c包含啊
这是我的makefile:
CC=gcc
CFLAGS=-Wall -I. -c
EXEC_FILE=program1
all: program
a_functions.o: a_functions.c
a_functions.c: a.h
main.o: main.c
main.c: main.h
objects: a_functions.c main.c
$(CC) a_functions.c main.c $(CFLAGS)
program: a_functions.o main.o
$(CC) a_functions.o main.o -o $(EXEC_FILE)
Run Code Online (Sandbox Code Playgroud)
根据建议更改makefile似乎有同样的问题::
all: program
a_functions.o: a_functions.c a.h
gcc a_functions.c -c
main.o: main.c main.h
gcc main.c -c
program: a_functions.o main.o
gcc a_functions.o main.o -o program1
Run Code Online (Sandbox Code Playgroud) 是否可以在Makefile中使用通配符函数在编译过程中排除源文件?
就像有几个源文件一样
src/foo.cpp
src/bar.cpp
src/...
Run Code Online (Sandbox Code Playgroud)
然后在我的makefile中,
SRC_FILES = $(wildcard src/*.cpp)
Run Code Online (Sandbox Code Playgroud)
但我想排除bar.cpp.这可能吗?
这是我的情况:
我正在使用Ubuntu 10.04(Lucid Lynx).系统的默认Python是v2.6.5,但我需要Python v2.7.所以我从python.org下载了源代码并尝试安装它.
我第一次安装它时,我跑了:
cd Python2.7.4
./configure --prefix=/usr
make
su root
make install
Run Code Online (Sandbox Code Playgroud)
这会将Python 2.7安装到我的系统中.它将创建一个链接,"python",也/usr/bin链接到.因此,当我输入时,系统将为我启动Python 2.7.4,就像我输入时一样.python2.7/usr/bin>python>python2.7
但是当我以这种方式安装时:
cd Python2.7.4
./configure --prefix=/usr
make
su root
make altinstall
Run Code Online (Sandbox Code Playgroud)
链接"python" /usr/bin仍然存在,并且链接到python2.6默认系统版本.当然,我可以删除它并创建一个链接到的新软链接python2.7.
除了链接之外,命令"make install"和"make altinstall"之间有什么区别/usr/bin?
我想在我的makefile中检测一个工具是错误版本的条件,并强制make失败,并显示一条错误消息,指出该项目不是正确的版本.
谁能举个例子呢?
我尝试了以下但是它不是正确的语法:
ifeq "$(shell svnversion --version | sed s/[^0-9\.]*://)" "1.4"
$error("Bad svnversion v1.4, please install v1.6")
endif
Run Code Online (Sandbox Code Playgroud)
谢谢.
我正在Linux中从源代码(CPP)构建一个开源项目.这是订单:
$CFLAGS="-g Wall" CXXFLAGS="-g Wall" ../trunk/configure --prefix=/somepath/ --host=i386-pc --target=i386-pc
$make
Run Code Online (Sandbox Code Playgroud)
编译时我收到很多编译器警告.我想开始修复它们.我的问题是如何捕获文件中的所有编译器输出?
$make > file没有做好这份工作.它只是保存编译器命令,就像g++ -someoptions /asdf/xyz.cpp我想要输出这些命令执行一样.
对于生态系统的新手来说,目前尚不清楚构建和管理中小型OCaml项目的规范首选方式.我理解ocamlc&c.的基础知识- 它们反映了传统的UNIX C编译器,看起来很简单.但是,高于单个文件的一次性编译水平,目前还不清楚如何最好地简单干净地管理编译.问题不是寻找潜在的工具,而是通过社区的经验验证一种或几种正确的(足够的)方法来构建和构建标准的OCaml项目.
我的模型用例是一个适度但非常重要的项目,纯OCaml或OCaml加上C依赖项.这样一个项目:
几个替代工具脱颖而出:
(我也看过OMake,它似乎是一个自封的" make++",它还包括一套常用语言的标准规则,包括OCaml和ocaml- makenéeOCamlMakefile,为GNU提供标准规则的模板make.)
这些都是管理OCaml构建的首选现代方式吗?
项目文件的结构如何最佳?
如何包含和管理第三方库依赖项?是首选在系统级别安装它们,还是有一种标准和直接的方式在本地管理项目?我更喜欢一种模式,其中项目尽可能保持独立.
运行时出现以下错误make,我不知道它意味着什么或者该怎么做.任何人都可以照亮我或指向正确的方向吗?
(cd libdvdnav-git && patch -p1) < ../../contrib/src/dvdnav/dvdnav.patch
patching file Makefile.am
Hunk #1 FAILED at 1.
1 out of 1 hunk FAILED -- saving rejects to file Makefile.am.rej
make: *** [dvdnav] Error 1
Run Code Online (Sandbox Code Playgroud)
我正在尝试为win32交叉编译VLC(使用linux).