简单的makefile生成实用程序?

Sta*_*ked 7 c++ makefile

有没有人知道通过扫描源文件的目录生成makefile的工具?

这可能是天真的:

  • 无需检测外部依赖项
  • 使用默认编译器/链接器设置

Job*_*Job 9

你可以写一个Makefile为你做这个:

SOURCES=$(shell find . -name "*.cpp")
OBJECTS=$(SOURCES:%.cpp=%.o)
TARGET=foo

.PHONY: all
all: $(TARGET)

$(TARGET): $(OBJECTS)
        $(LINK.cpp) $^ $(LOADLIBES) $(LDLIBS) -o $@

.PHONY: clean
clean:
        rm -f $(TARGET) $(OBJECTS)
Run Code Online (Sandbox Code Playgroud)

只需将它放在源层次结构的根目录中并运行make(您需要GNU Make才能使其工作).

(请注意,我不是很流利,Makefile所以也许这可以更轻松.)

  • 另外make有通配符函数来查找文件. (2认同)
  • 并查看:http://stackoverflow.com/questions/2481269/how-to-make-simple-c-makefile/2481326#2481326,了解像Martin链接到的简短GNU makefile中正在发生的事情.此外,还有许多其他相当不错的"基本makefile"答案分散在整个网站上. (2认同)

tib*_*bur 7

CMake做到了,它甚至创建了makefile和Visual Studio项目.http://www.cmake.org/

您需要做的就是创建一个包含以下行的CMakeLists.txt文件:

file(GLOB sources *.h *.c *.cxx *.cpp *.hxx)
add_executable(Foo ${sources})
Run Code Online (Sandbox Code Playgroud)

然后进入一个干净的目录并键入:

cmake /path/to/project/
Run Code Online (Sandbox Code Playgroud)

这将在该干净的构建目录上创建makefile.


Mar*_*ork 5

这是我将用于一个简单的项目:

CC               = $(CXX)
CXXFLAGS        += -ansi -pedantic -W -Wall -Werror
CPPFLAGS        += -I<Dir Where Boost Lives>


SOURCES          = $(wildcard *.cpp)
OBJECTS          = $(patsubst %.cpp,%.o,$(SOURCES))

all:             myApp
myApp:           $(OBJECTS)
Run Code Online (Sandbox Code Playgroud)

唯一的限制是,如果要构建名为myApp的可执行文件.然后其中一个源文件应命名为myApp.cpp(这是我放置main的地方).