包含相对于当前目录或源代码位置的路径?

时间:2015-11-02 18:06:19

标签: makefile header-files

我对makefiles搜索包含路径感到困惑。

假设我有一个文件结构:

inner join

我在makefile中使用SELECT table_user.id, table_user.name, table_feedback.rate, table_feedback.date FROM table_feedback INNER JOIN table_user ON table_user.id = table_feedback.user_id WHERE table_feedback = '2015-11-2' expected_result_table | user_id | name | rate | date | |-------- |------|------|----------| | 1 |jony | |2015-11-2 | | 2 |tony | 1 |2015-11-2 | | 3 |mona | 1 |2015-11-2 | 选项来指示包含的标题的路径。

以下是src1.cpp

中包含的标题
.
├── hdrMainFolder.h
├── headers
│   └── hdrDifferentPath.h
├── makefile
├── sourceCode.cpp
└── src
    ├── hdrSamePath.h
    └── src1.cpp

我应该在makefile中明确指出哪条路径?哪一个是不必要的?这下面就够了吗?

-I

是否需要指示标题的路径,是否只包含在同一路径下的源文件中?

1 个答案:

答案 0 :(得分:0)

Which of the paths I should indicate explicitly in the makefile? 
Which of them are unnecessary?

在命令shell上,运行编译指令的目录是编译器的当前目录 [使用用户直接命令或使用makefile进行编译]

当前目录(./)是编译器默认包含的头文件搜索路径。

如果创建子目录并将头文件放在子目录结构中,则需要为包含所需头文件的每个子目录显式添加-I规则。

hdrMainFolder.h -> present in current directory, no need to add -I rule for this  
hdrDifferentPath.h -> need to add -I rule (-I./headers)  
hdrSamePath.h -> need to add -I rule (-I./src)

[您可以在上面添加的-I规则中省略./,我会更加明确地遵循。

Is it necessary to indicate to the path of a header, if it is only 
included by a source file under the same path?

是,源文件位置不用于确定用户定义的头文件搜索路径。需要明确提及它。