我通常使用以下选项将“make command line”的macros定义传递给“makefile”:-Dname = value。 该定义可以在makefile中进行访问。 我也使用类似的编译器选项将“makefile”的macros定义传递给“源代码”:-Dname = value(在许多编译器中支持)。 这个定义可以在源代码中find。 我现在需要的是允许我的makefile的用户能够将任意macros定义从“make.exe命令行”立即传递到“源代码”,而不必在makefile中更改任何内容。 所以用户可以键入:make -f mymakefile.mk -SOMEOPTION var = 5 那么直接代码main.c就可以看到var: int main() { int i = var; }
我对cmake非常陌生,阅读了一些关于如何使用它的教程,并编写了一些复杂的50行CMake脚本,以便为3个不同的编译器编写一个程序。 这大概就是我在cmake上的所有知识。 现在我的问题是,我有一些源代码,我的文件夹,我不想碰/混乱,当我做的程序。 我想要所有的cmake,并把输出文件和文件夹放到../Compile/中,所以我在cmake脚本中改变了一些variables,并且在我的笔记本电脑上做了这样的工作, Compile$ cmake ../src Compile$ make 在那里,我有一个干净的输出在我现在正在的文件夹,这正是我正在寻找。 现在我转移到另一台电脑,并重新编译CMake 2.8.11.2,我几乎回到了一个! 它总是将这个东西编译到我的CMakeLists.txt所在的src文件夹中。 我在cmake脚本中select目录的部分是这样的: set(dir ${CMAKE_CURRENT_SOURCE_DIR}/../Compile/) set(EXECUTABLE_OUTPUT_PATH ${dir} CACHE PATH "Build directory" FORCE) set(LIBRARY_OUTPUT_PATH ${dir} CACHE PATH "Build directory" FORCE) set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${dir}) set(CMAKE_BUILD_FILES_DIRECTORY ${dir}) set(CMAKE_BUILD_DIRECTORY ${dir}) set(CMAKE_BINARY_DIR ${dir}) SET(EXECUTABLE_OUTPUT_PATH ${dir}) SET(LIBRARY_OUTPUT_PATH ${dir}lib) SET(CMAKE_CACHEFILE_DIR ${dir}) 现在它总是以: — Build files have been written to: /…/src 我错过了什么吗?
我是一个非常新的makefile,我想使用makefile创build目录。 我的项目目录是这样的 +–Project +–output +–source +Testfile.cpp +Makefile 我想把所有的对象和输出到各自的输出文件夹。 我想在编译后创build这样的文件夹结构。 +–Project +–output +–debug (or release) +–objs +Testfile.o +Testfile (my executable file) +–source +Testfile.cpp +Makefile 我尝试了几个选项,但不能成功。 请帮助我使用make文件制作目录。 我发布我的Makefile供您考虑。 #——————————————————————— # Input dirs, names, files #——————————————————————— OUTPUT_ROOT := output/ TITLE_NAME := TestProj ifdef DEBUG TITLE_NAME += _DEBUG else ifdef RELEASE TITLE_NAME += _RELEASE endif endif # Include all […]
是否有一个命令行的方式来找出哪个目标的先决条件没有更新?
我试图在使用ndk-build编译库时打印一些额外的信息。 例如: LOCAL_PATH := $(call my-dir) all:;echo $(LOCAL_PATH) echo: $(LOCAL_PATH) print:echo "i'm not working" 当我做ndk生成,只是编译所有的Android.mk,但我没有得到控制台回声。 我赞成GNU make的信息(ndk-build只是一个很小的GNU make),还有一些人认为echo必须使用$(VAR)工作,但是它并不适用于我的情况。 一些想法?
几个月前,我提出了以下用于学校作业的通用Makefile : # ———————————————— # Generic Makefile # # Author: yanick.rochon@gmail.com # Date : 2010-11-05 # # Changelog : # 0.01 – first version # ———————————————— # project name (generate executable with this name) TARGET = projectname CC = gcc -std=c99 -c # compiling flags here CFLAGS = -Wall -I. LINKER = gcc -o # […]
关于GNU make中作业的数量是否应该等于内核数量,或者如果你可以通过增加一个额外的工作来优化构build时间,这些工作可以排队而其他人“工作”,似乎有一些争议。 。 在四核系统上使用-j4或-j5更好吗? 你有没有看到(或完成)任何支持其中的基准testing?
经过多年不使用make,我发现自己需要它,现在的GNU版本。 我很确定我应该能够做我想做的,但还没有弄清楚怎么做,或者find了Google的答案等。 我试图创build一个testing目标,这将执行我的程序多次,将结果保存在一个日志文件。 一些testing应该会导致我的程序中止。 不幸的是,我的makefile在第一个导致错误的testing中放弃。 我有这样的东西: # Makefile # test: myProg -h > test.log # Display help myProg good_input >> test.log # should run fine myProg bad_input1 >> test.log # Error 1 myProg bad_input2 >> test.log # Error 2 通过以上步骤,在bad_input1运行之后退出,绝不会进入bad_input2运行。
可能重复: 出错:缺less分隔符 在makefile中有这样的代码: PROG = semsearch all: $(PROG) %: %.c gcc -o $@ $< -lpthread clean: rm $(PROG) 和错误 missing separator. stop. 有人能帮我吗?
我已经使用过一段时间了,所以忍耐着我… 我有一个目录, flac ,包含.FLAC文件。 我有一个相应的目录, mp3包含MP3文件。 如果一个FLAC文件比相应的MP3文件(或者相应的MP3文件不存在)更新,那么我想运行一堆命令将FLAC文件转换为MP3文件,然后复制标签。 踢球者:我需要recursion地searchflac目录,并在mp3目录中创build相应的子目录。 目录和文件名称中可以有空格,并以UTF-8命名。 而我想用make来驱动这个。