几个星期休息之后,我正在尝试使用David Vandevoorde和Nicolai M. Josuttis 所着的模板 - 完整指南来扩展和扩展我的模板知识,我现在想要了解的是模板的显式实例化.
我实际上并没有这样的机制问题,但我无法想象我想要或想要使用此功能的情况.如果有人能向我解释,我将不仅仅是感激.
可能重复:
发生错误:缺少分隔符
在makefile中有这个代码:
PROG = semsearch
all: $(PROG)
%: %.c
gcc -o $@ $< -lpthread
clean:
rm $(PROG)
Run Code Online (Sandbox Code Playgroud)
和错误
missing separator. stop.
Run Code Online (Sandbox Code Playgroud)
有人能帮我吗?
我是计算机工程专业的学生,我还有另一个C程序要实现.到目前为止,我总是从以前的项目中创建一个新的Makefile,这需要花时间进行设置.是否有一个我可以使用的Makefile画布是如此强大,以至于我需要提供的是包含main函数的c文件的名称?
我的想法是,对于每个新项目,我创建一个包含它的文件夹Makefile,一个bin文件夹和一个src文件夹.然后我会将一些变量编辑到Makefile(包含main()函数的C文件),然后make自动构建所有内容,将依赖项考虑在内.
你知道这样的Makefile存在吗?
[通过Alexandre C.编辑]:Automake/Autoconf对于仅使用标准库并在标准unix os上运行的这类项目来说是过度的.对于我们需要实现的项目,依赖项(对于要链接的文件)总是可以从".h"包含中推断出来,并且通常涉及的文件非常少.
在我的项目中,我有一些包含方法的头文件(例如用于模板类).所有这些头文件都包含在一个文件中header.h,然后包含在每个cpp文件中.这样,我必须在一个地方更改代码.还有一些.h没有相应.cpp文件的文件.
然后我有这个makefile:
# Makefile
.PHONY: run clean rebuild
CC = g++
CFLAGS = -Wall -Ofast -std=c++0x -pthread
RM = rm -f
EXEC = main
SRC = $(wildcard *.cpp)
OBJ = $(SRC:.cpp=.o)
$(EXEC): $(OBJ)
$(CC) $(CFLAGS) -o $@ $(OBJ)
%.o: %.cpp
$(CC) $(CFLAGS) -c $^
run: $(EXEC)
./$(EXEC)
clean:
$(RM) $(EXEC) *.o *.gch *~
rebuild: clean $(EXEC)
Run Code Online (Sandbox Code Playgroud)
一切正常,除了一个小而烦人的细节:如果我修改一个cpp文件,那么我可以做make,一切都正确更新,但如果我修改一个头文件,那么我必须删除所有内容并从头开始重新编译(这是我有那个丑陋的rebuild目标的原因),否则编辑将没有任何效果.
有没有办法在不重组整个代码的情况下让事情变得更好?
我试过这个makefile
.PHONY: run clean rebuild
CC = g++
CFLAGS = -Wall …Run Code Online (Sandbox Code Playgroud)