C++ C++;生成文件脚本
我有几个很长的编译行,我想通过创建一个脚本使它们更加自动化和易于使用。我发现C++ C++;生成文件脚本,c++,makefile,C++,Makefile,我有几个很长的编译行,我想通过创建一个脚本使它们更加自动化和易于使用。我发现makefile对于这个目的应该很好,但是我正在与文件格式作斗争 我的编译行如下所示: g++ -std=c++11 -O3 -DNDEBUG \ -I /Users/whizzil/Desktop/proj/include \ -L /Users/whizzil/Desktop/proj/lib \ main.cpp
makefile
对于这个目的应该很好,但是我正在与文件格式作斗争
我的编译行如下所示:
g++ -std=c++11 -O3 -DNDEBUG \
-I /Users/whizzil/Desktop/proj/include \
-L /Users/whizzil/Desktop/proj/lib \
main.cpp \
-o program \
-lsdsl -ldivsufsort -ldivsufsort64 -Wno-inconsistent-missing-override
# what compiler to use
CC=g++
# options to the compiler
CFLAGS=-std=c++11 -03 -DNDEBUG
# include header files
INCLUDE=-I /Users/whizzil/Desktop/proj/include
# source lib files
LIB=-L /Users/whizzil/Desktop/proj/lib
# sources
SOURCES=main.cpp
#executable
EXECUTABLE=main
所以我有几个编译器标志,然后是包含
和库
部分,然后是链接器选项,然后是忽略警告标志
我试着写一个makefile
如下:
g++ -std=c++11 -O3 -DNDEBUG \
-I /Users/whizzil/Desktop/proj/include \
-L /Users/whizzil/Desktop/proj/lib \
main.cpp \
-o program \
-lsdsl -ldivsufsort -ldivsufsort64 -Wno-inconsistent-missing-override
# what compiler to use
CC=g++
# options to the compiler
CFLAGS=-std=c++11 -03 -DNDEBUG
# include header files
INCLUDE=-I /Users/whizzil/Desktop/proj/include
# source lib files
LIB=-L /Users/whizzil/Desktop/proj/lib
# sources
SOURCES=main.cpp
#executable
EXECUTABLE=main
但我不知道如何进行。有谁能帮我介绍一下这个编译行的示例
makefile
,让我理解这个概念吗?从一些简单明了的方法开始:
program:
g++ -std=c++11 -O3 -DNDEBUG \
-I /Users/whizzil/Desktop/proj/include \
-L /Users/whizzil/Desktop/proj/lib \
main.cpp \
-o program \
-lsdsl -ldivsufsort -ldivsufsort64 -Wno-inconsistent-missing-override
然后引入一两个变量:
# what compiler to use
CC=g++
# options to the compiler
CFLAGS=-std=c++11 -03 -DNDEBUG
program:
$(CC) $(CFLAGS) \
-I /Users/whizzil/Desktop/proj/include \
-L /Users/whizzil/Desktop/proj/lib \
main.cpp \
-o program \
-lsdsl -ldivsufsort -ldivsufsort64 -Wno-inconsistent-missing-override
还有几点:
# what compiler to use
CC=g++
# options to the compiler
CFLAGS=-std=c++11 -03 -DNDEBUG
# include header files
INCLUDE=-I /Users/whizzil/Desktop/proj/include
# source lib files
LIB=-L /Users/whizzil/Desktop/proj/lib
program:
$(CC) $(CFLAGS) $(INCLUDE) $(LIB) \
main.cpp \
-o program \
-lsdsl -ldivsufsort -ldivsufsort64 -Wno-inconsistent-missing-override
变量LIB实际上是指一个目录,所以让我们将其重命名为LIBDIR并引入LIBS:
# what compiler to use
CC=g++
# options to the compiler
CFLAGS=-std=c++11 -03 -DNDEBUG
# include header files
INCLUDE=-I /Users/whizzil/Desktop/proj/include
# source lib files
LIBDIR=-L /Users/whizzil/Desktop/proj/lib
LIBS = -lsdsl -ldivsufsort -ldivsufsort64
program:
$(CC) $(CFLAGS) $(INCLUDE) $(LIBDIR) main.cpp \
-o program $(LIBS) -Wno-inconsistent-missing-override
一旦有了这么多的工作,就可以进行进一步的改进。继续为
main
编写规则吗?还有make的?Shell脚本中不清楚的地方!=Makefile<代码>目标:空间分隔的依赖项\n\t创建目标的命令