C++的简单生成文件
Simple makefile for C++
我在CS类的编程分配中遇到了一些问题。本周我们被介绍到makefiles,但它几乎没有被提及。目标是编写一个程序来计算用户提供的双打的平均值和总和。这个程序在g++上运行得很好,但我对makefile有问题。
我正在处理3个cpp文件:main.cpp、average.cpp、summation.cpp。以及2个头文件:average.h和summary.h
这是我尝试过的一个make文件:
CXX = g++
CXXFLAGS = -std=c++0x -Wall -pedantic-errors -g
SRCS = summation.cpp average.cpp main.cpp
OBJS = ${SRCS:.cpp=.o}
HEADERS = summation.h average.h
MAIN = myprog
all: ${MAIN}
@echo Simple compilter named myprog has been compiled
${MAIN}: ${OBJS} ${HEADERS}
${CXX} ${CXXFLAGS} ${OBJS} -o ${MAIN} ${OBJS}
.cpp.o:
${CXX} ${CXXFLAGS} -c $< -o $@
clean:
${RM} ${PROGS} ${OBJS} *.o *~
错误:main.cpp:31:对avg(double*, int)'
main.cpp:32: undefined reference to
sum(double*,int)'的未定义引用
如果我运行命令g++main.cpp汇总.cpp平均值.cpp-o main然后它将在没有任何问题的情况下编译。
我不确定我是有什么东西出了问题,还是遗漏了什么。环顾四周,我发现了很多信息,但它似乎超出了我的想象。
我认为您有两个问题。
首先,排序SRCS = summation.cpp average.cpp main.cpp
。这导致CCD_ 3以summation.o average.o main.o
的顺序被提供给g++,这导致了未定义的错误。您希望按main.o summation.o average.o
的顺序提供它们,因此SRCS应为SRCS = main.cpp summation.cpp average.cpp
。
第二,在线:
${CXX} ${CXXFLAGS} ${OBJS} -o ${MAIN} ${OBJS}
不需要第二个${OBJS}
尝试以下操作:
CXX = g++
CXXFLAGS = -std=c++0x -Wall -pedantic-errors -g
SRCS = main.cpp summation.cpp average.cpp
OBJS = ${SRCS:.cpp=.o}
HEADERS = summation.h average.h
MAIN = myprog
all: ${MAIN}
@echo Simple compilter named myprog has been compiled
${MAIN}: ${OBJS}
${CXX} ${CXXFLAGS} ${OBJS} -o ${MAIN}
.cpp.o:
${CXX} ${CXXFLAGS} -c $< -o $@
clean:
${RM} ${PROGS} ${OBJS} *.o *~.
相关文章:
- 一种在C++中读取TXT配置文件的简单方法
- 有没有办法简单地从 GPU 调用多个 cpp 输出文件?
- 如何使用 samtools C API 构建一个简单的主.cpp文件
- 通过比较C++中的行在 txt 文件中搜索的最简单方法是什么?
- 查找定义我的 C/C++ 函数/宏的文件比'grep'更简单的方法
- 在C++中创建文件夹选取器对话框的最简单方法是什么?
- 简单的二分搜索对我不起作用。我正在尝试从文本文件中搜索单词
- 运行简单的.oct文件时Octave崩溃,我的代码出了什么问题?
- 编译简单的多文件类程序时出现未定义的引用错误
- 为简单的src,include,libs文件夹项目编写Makefile
- 从 txt 文件中读取数据的最简单方法
- 简单加密和解密 TXT 文件 [C++]
- Centos6 gcc6:编译简单的 c++11 测试文件时,默认的 ABI 不拾取
- 在 Fedora 20 中查找简单设备驱动程序的头文件
- 使用 libcurl C++将文件下载到 Ubuntu,简单示例不起作用
- 简单的文本文件格式化在linux下崩溃,但在Windows中很好
- 算术编码FPAQ0(一个简单的订单-0算术文件压缩机)
- C++ 使用简单的代码同时写入文件和控制台输出
- 提升::asio async_read简单的文件上传
- 如何直接在安卓设备上作为可执行文件运行简单的 c++ 程序?