提问者:小点点

向Eclipse Makefile C++项目添加源文件


我在Ubuntu中创建了简单的C++Makefile Eclipse项目。Eclipse已创建默认Makefile:

PROJECT_ROOT = $(dir $(abspath $(lastword $(MAKEFILE_LIST))))

OBJS = cpp_makefile.o

ifeq ($(BUILD_MODE),debug)
    CFLAGS += -g
else ifeq ($(BUILD_MODE),run)
    CFLAGS += -O2
else ifeq ($(BUILD_MODE),linuxtools)
    CFLAGS += -g -pg -fprofile-arcs -ftest-coverage
    LDFLAGS += -pg -fprofile-arcs -ftest-coverage
else
    $(error Build mode $(BUILD_MODE) not supported by this Makefile)
endif

all:    cpp_makefile

cpp_makefile:   $(OBJS)
    $(CXX) $(LDFLAGS) -o $@ $^

%.o:    $(PROJECT_ROOT)%.cpp
    $(CXX) -c $(CFLAGS) $(CXXFLAGS) $(CPPFLAGS) -o $@ $<

%.o:    $(PROJECT_ROOT)%.c
    $(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@ $<

clean:
    rm -fr cpp_makefile $(OBJS)

如果我只有一个源文件,一切都很顺利。如果我用它的头和cpp文件创建类,并将include头添加到主cpp文件中,那么构建将失败。系统似乎找不到

错误:

Building in: /home/a/cpp-workspace2/cpp_makefile/build/default
make -f ../../Makefile
g++ -c -O2   -o cpp_makefile.o /home/a/cpp-workspace2/cpp_makefile/cpp_makefile.cpp
g++  -o cpp_makefile cpp_makefile.o
/usr/bin/ld: cpp_makefile.o: in function `main':
cpp_makefile.cpp:(.text.startup+0x1c): undefined reference to `TestMe::TestMe()'
collect2: error: ld returned 1 exit status
make: *** [../../Makefile:19: cpp_makefile] Error 1
Build complete (3 errors, 0 warnings): /home/a/cpp-workspace2/cpp_makefile/build/default

如果我在EclipseC++托管构建项目中使用相同的源代码,一切都很顺利。如何在Eclipse Makefile项目中正确地解决这个问题?

cpp_makefile.cpp

#include "TestMe.h"

int main(int argc, char **argv)
{
    TestMe testMe  = TestMe();
    return 0;
}

testme.h:

class TestMe {
public:
    TestMe();
    virtual ~TestMe(){};

};

testme.cpp:

#include "TestMe.h"
TestMe::TestMe() {

}

共1个答案

匿名用户

Eclipse将为您创建一个默认的,但它不管理基于MakeFile的项目中的

那么,对于基于Makefile的项目,您需要在向项目添加源时对Makefile进行适当的更改。在这种特殊情况下,看起来您应该改变

OBJS = cpp_makefile.o

OBJS = cpp_makefile.o TestMe.o

相关问题


MySQL Query : SELECT * FROM v9_ask_question WHERE 1=1 AND question regexp '(eclipse|makefile|c++|项目|添加|源文件)' ORDER BY qid DESC LIMIT 20
MySQL Error : Got error 'repetition-operator operand invalid' from regexp
MySQL Errno : 1139
Message : Got error 'repetition-operator operand invalid' from regexp
Need Help?