如何解释g ++编译器读取用于从'list'文件中搜索.h文件的'include'目录列表

时间:2018-03-19 21:47:40

标签: c++ g++

也许最好详细说明这个问题。

所以我有一个编译行:

g++ -std=c++11 -c main.cxx 

然后因为main.css坚持加载'header.h',它将在'search_dir'中搜索,而'search_dir'不是STL的一部分所以我需要在编译选项中'包含'搜索目录,如:

g++ -std=c++11 -c main.cxx -I/path/to/search_dir

然后说我有30个搜索目录(search_dir1 .. search_dir30)......

所以,我会将它们包括在内:

g++ -std=c++11 -c main.cxx -I/path/to/search_dir1 -I/path/to/search_dir2 .....  -I/path/to/search_dir30

命令行变得非常长且不可读。所以可以选择保存所有内容:

/path/to/search_dir1
/path/to/search_dir2
...
/path/to/search_dir30

进入一个名为'my_search_dirs'的文件,然后告诉g ++这样的东西:

g++ -std=c++11 -c main.cxx -If=my_search_dirs

当然我'发明了'选项-If(有些像:'包含搜索目录列表的文件')。

我已阅读手册并研究网络和堆栈溢出,无法找到任何远程询问或讨论(或回答)

g ++中有这个选项吗?

2 个答案:

答案 0 :(得分:1)

您可以这样做:

$(".cell").each(function(i) {
  this.innerText = $table[i].name; // this is the current DOM node
});

包含所有dirs的 file.txt

答案 1 :(得分:1)

喜欢这个。

创建一个包含任何名称的文件,例如,cc_opts包含您的所有-Idir个选项 需要,就像你在命令行上写它们一样,或者,如果你愿意,也可以打破 多行。 E.g。

<强> cc_opts

-I/path/to/search_dir1 -I/path/to/search_dir2 -I/path/to/search_dir3

将其保存到您的构建目录中。然后,在编译器命令行中,替换:

-I/path/to/search_dir1 -I/path/to/search_dir2 -I/path/to/search_dir3

使用:

@cc_opts

然后gcc / g ++将从cc_opts读取选项并插入它们 命令行代替@cc_opts

您可以在@ - 文件中添加您喜欢的任何选项,而不仅仅是-I - 选项。

请参阅@file option in the GCC manual

在利用这种便利之前,请记住,当它落到你身上时 调试由其构建日志引导的自动构建的失败,它可能更多 有帮助您看到:

g++ ... -I/path/to/search_dir1 -I/path/to/search_dir2 -I/path/to/search_dir3 ...

比:

g++ ... @path/to/optionsfile ...

还有一个由以下内容构成的构建系统:

<强>生成文件

...
CPPFLAGS := -I/path/to/search_dir1 \
            -I/path/to/search_dir2 \
            -I/path/to/search_dir3
...

比包含以下内容的更清晰,更强大:

<强>生成文件

    ...
    CPPFLAGS := @inc_opts
    ...

<强> inc_opts

-I/path/to/search_dir1 -I/path/to/search_dir2 -I/path/to/search_dir3

这些注意事项解释了很少见到哪些GCC @文件。