Sublime Text不在C ++中编译多文件项目

时间:2012-10-06 19:32:57

标签: c++ sublimetext2 sublimetext

我要编译一个多文件C ++程序,并出现以下错误;

Undefined symbols for architecture i386:
  "included::printMSG()", referenced from:
      _main in ccQwMj1l.o
ld: symbol(s) not[Finished in 0.3s with exit code 1] found for architecture i386
collect2: ld returned 1 exit status

我的代码: main.cpp:https://gist.github.com/3845822

included.cpp:https://gist.github.com/3845825

included.h:https://gist.github.com/3845827

(已确认可与g++合作)

编辑:我没有把这些文件放在一个项目中,它们只是在同一个文件夹中,我正在编译main.cpp

1 个答案:

答案 0 :(得分:1)

您不能只编译单个文件,并希望所有其他文件自动链接到它以创建最终程序。

实现这一目标的一种方法是使用名为make的程序,该程序读取具有Makefile遵循规则的make

一个简单的Makefile可能如下所示:

CXXFLAGS = -Wall -g

my_pogram: main.o other_file.o third_file.o
    g++ main.o other_file.o third_file.o -o my_program

main.o: main.cpp
    g++ $(CXXFLAGS) -c -o main.o main.cpp

other_file.o: other_file.cpp
    g++ $(CXXFLAGS) -c -o other_file.o other_file.cpp

third_file.o: third_file.cpp
    g++ $(CXXFLAGS) -c -o third_file.o third_file.cpp

还有其他类似的程序来处理这个问题。一个受欢迎的是CMake