使用 G++ 在 Sublime 2 中编译多个 *.cpp 和 *.h 文件



在MAC上,我可以使用命令行成功编译c ++程序

  g++ *.cpp *.h -o executablename

但是它从Sublime 2中失败了 - 我为此创建了一个构建系统

 {
 "cmd" : ["g++", "*.cpp", "*.h", "-o", "executablename"]
 }

有了这些结果

 i686-apple-darwin11-llvm-g++-4.2: *.cpp: No such file or directory
 i686-apple-darwin11-llvm-g++-4.2: *.h: No such file or directory
 i686-apple-darwin11-llvm-g++-4.2: no input files
 [Finished in 0.0s with exit code 1]

但是,如果我在项目中使用特定文件名创建构建系统,它可以工作:

{
"cmd" : ["g++", "Test.cpp", "TestCode.cpp", "TestCode.h", "TestCode2.cpp", "TestCode2.h", "-o", "executablename"]
}

如何在Sublime 2中创建使用命令行模式编译多个文件的构建系统,就像在命令行上一样

谢谢海德。

根据您的建议使用构建系统后,这将起作用:

{
"cmd" : ["g++ *.cpp -o executablename"],
"shell":true
}

也许你应该使用这样的东西:

{
 "cmd" : ["gmake"]
}

或者可能只是make而不是gmake.但是如果你有gcc,GNU make应该在同一个目录中。下面的例子 Makefile 是用 GNU Make 测试的,如果不在其他地方进行小的修改,它可能无法工作。

所以这里有一个非常原始的Makefile给你。重要!它应该被命名Makefile这样GNU Make就可以找到没有参数的它,并且你必须在其中使用实际的制表符进行缩进(在下面的g++rm命令之前)。

CXXFLAGS := -Wall -Wextra $(CXXFLAGS) # example of setting compilation flags
# first rule is default rule, commonly called 'all'
# if there many executables, you could list them all
all: executablename
# we take advantage of predefined "magic" rule to create .o files from .cpp
# a rule for linking .o files to executable, using g++ to get C++ libs right 
executablename: TestCode.o TestCode2.o Test.o
    g++ $^ -o $@
# $^ means all dependencies (the .o files in above rule)
# $@ means the target (executablename in above rule)
# rule to delete generated files, - at start means error is ignored
clean:
    -rm executablename *.o

但如今,即使使用手写的Makefile也可以被认为是原始的。你也许应该安装并学习使用CMake。

相关内容

  • 没有找到相关文章

最新更新