Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;生成文件脚本_C++_Makefile - Fatal编程技术网

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创建目标的命令