【问题标题】:Add source file to Eclipse Makefile C++ project将源文件添加到 Eclipse Makefile C++ 项目
【发布时间】:2021-04-02 22:58:48
【问题描述】:

我在 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 文件创建类 TestMe 并将包含头文件添加到主 cpp 文件构建失败。好像系统找不到TestMe.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

如果我在 Eclipse C++ 托管构建项目中使用相同的源代码,一切都会正常。如何在 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() {

}

【问题讨论】:

    标签: c++ eclipse gcc makefile eclipse-cdt


    【解决方案1】:

    Eclipse 将为您创建一个默认的Makefile,但它不会管理基于makefile 的项目中的Makefile(s)。它不能真正做到这一点,同时还允许您进行自己的 makefile 更改或支持它不是自己生成的 makefile。如果您希望构建配置完全由 Eclipse 管理,那么您应该选择不同的项目类型。

    对于基于 makefile 的项目,您需要在将源添加到项目时自己对 Makefile 进行适当的更改。在这种特殊情况下,您似乎应该更改

    OBJS = cpp_makefile.o
    

    OBJS = cpp_makefile.o TestMe.o
    

    【讨论】:

      猜你喜欢
      • 2018-12-15
      • 1970-01-01
      • 2012-12-17
      • 2011-05-18
      • 1970-01-01
      • 2013-08-02
      • 2015-10-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多