【发布时间】:2018-01-27 19:03:51
【问题描述】:
我熟悉 Gtkmm 和 C++,但对 Makefiles 很陌生,并且在让我的实际生成可执行文件时遇到问题。我知道一个完整的 Makefile 对于我当前的项目的简单性来说是多余的,但我正在尝试将一个基本模板放在一起以用于更大的项目。我在 Ubuntu 17.10 上并从我的“构建”文件夹中运行 make 命令。任何帮助将不胜感激!
终端输出
pearscol@UBUNTU-1710:~/projects/testprogram/build$ make
g++ -o testprogram `pkg-config --libs gtkmm-3.0`
/usr/lib/gcc/x86_64-linux-gnu/7/../../../x86_64-linux-gnu/Scrt1.o: In
function `_start':
(.text+0x20): undefined reference to `main'
collect2: error: ld returned 1 exit status
Makefile:19: recipe for target 'testprogram' failed
make: *** [testprogram] Error 1
源文件结构
- /build
- /build/Makefile
- /src
- /src/main.cpp
/build/Makefile
CXX = g++
CXXFLAGS = `pkg-config gtkmm-3.0 --cflags` -std=c++14 -g -Wall
INCLUDES = -I../include
SRCS = $(wildcard *.cpp)
OBJS = $(SRCS:.cpp=.o)
PROGRAM = testprogram
DEPDIR = ../src/
LIBS = `pkg-config --libs gtkmm-3.0`
all: $(PROGRAM)
-include $(OBJS:%.o=$(DEPDIR)/%.Po)
%.o: %.cpp
$(CXX) -MT $@ -MD -MP -MF $*.Tpo -c -o $@ $(CXXFLAGS) $<
$(PROGRAM): $(OBJS)
$(CXX) -o $(PROGRAM) $(OBJS) $(LIBS)
# DO NOT DELETE THIS LINE -- make depend needs it
/src/main.cpp
#include <gtkmm.h>
int main(int argc, char *argv[]) {
Glib::RefPtr<Gtk::Application> app =
Gtk::Application::create(argc, argv, "testprogram");
Gtk::Window window;
window.set_default_size(400, 200);
window.set_title("Tutorial");
return app->run(window);
}
【问题讨论】:
标签: c++ ubuntu makefile gnu-make gtkmm