在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中创建一个构建系统,使用命令行模式在命令行上编译多个文件?
答案 0 :(得分:7)
谢谢hyde。
根据您的建议使用构建系统后,这有效:
{
"cmd" : ["g++ *.cpp -o executablename"],
"shell":true
}
答案 1 :(得分:0)
你应该使用这样的东西:
{
"cmd" : ["gmake"]
}
或者可能只是make
而不是gmake
。但是如果你有gcc
,GNU make应该在同一个目录中。下面的示例 Makefile 使用GNU Make进行测试,如果没有其他地方的小修改,它可能无法正常工作。
所以这里是一个非常原始的Makefile。重要!它应该命名为Makefile
,因此GNU Make会在没有参数的情况下找到它,并且在其中你必须使用实际的tab char进行缩进(在 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。