C++新手的 Linux 编译
C++ compilation in linux for newbie
假设我的项目目录有 2 个子目录 A 和 B,A 目录包含:A.h
和 A.cpp
,B 目录包含:B.h
和 B.cpp
我的根目录包含main.cpp
现在内容:
啊:
#include"../B/B.h"
a();
答.cpp:
#include"A.h"
a()
{
b();
}
B.h:
b((;
乙.cpp:
b()
{
cout<<"Blah Blah Blah";
}
主.cpp:
#include"A/A.h"
main()
{
a();
}
并使用以下命令编译代码:
c++ main.cpp A.cpp B.cpp
问题很简单:在第一个文件(A.h
(,我不想把第一行写成 #include"../B/B.h"
如何将其更改为#include"B/B.h"
或#include"B.h"
?
你可以告诉编译器,头文件在哪个目录中。对于 gcc/g++,这是 -I 路径选项。路径可以是绝对的(例如 /home/me/src/projectx/
(或相对(例如:..
(。
您可以将其设置为顶级目录(onw,其中"B"所在的位置(和写入
#include <B/B.h>
并使用 -I 选项将其编译到您的顶级目录。
g++ -I[include dir] 正是为了这个目的。
给定此布局,其中A
包含A.h
和A.cpp
,B
包含B.h
和B.cpp
,main.cpp
根目录中:
$ ls *.cpp A B
main.cpp
A:
A.cpp A.h
B:
B.cpp B.h
您可以使用"#include "B/B.h"并编译您的程序
c++ -I. main.cpp A/A.cpp B/B.cpp
-I
标志告诉编译器在何处查找包含文件。如果您使用的是 GCC,请参阅 GCC 手册。
源文件内容
我编辑了您的示例以使其编译和运行:
A/A.h:
#include "B/B.h"
void a();
答.cpp:
#include "A.h"
void a()
{
b();
}
B/B.h:
void b();
提单.cpp:
#include <iostream>
void b()
{
std::cout<<"Blah Blah Blah";
}
主.cpp:
#include "A/A.h"
int main()
{
a();
}
相关文章:
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 如何在linux终端中同时编译和运行c++代码
- 在Linux for Windows上编译C++代码时出错
- 如何在 Mac 上正确编译C++,当它在 Linux 上编译没有问题时?
- 编译在我的 Mac 上工作,但在集群 (Linux) 上不起作用
- 在Linux上使用Clang / OLLVM交叉编译helloworld Windows可执行文件时的问题
- 在 Linux 中使用 -fvisibility=hidden 编译时出现库加载错误
- Steam 回调在 Linux / GCC 编译期间触发警告
- SFML 交叉编译 for Windows on Linux.
- 编译问题与 Ubuntu Linux
- 在Linux上交叉编译Windows应用程序时如何链接到Winsock?
- 在 Linux 上编译 - 在函数 '_start' 中:(.text+0x20):对 'main' 的未定义引用
- 在Linux/Ubuntu中编译openCV应用程序时,如何解决未定义的引用cv:..?
- Stringstream编译错误仅发生在linux环境中
- C++ 当我使用 iostream 时无法编译(Linux,CodeBlocks)
- 在Windows?上编译Linux OpenGL应用程序
- 在OS X上编译Linux应用程序 - 未找到标准库(CMATH)
- 交叉编译 linux-->windows:使用 opengl32 获得更新的 OpenGL 支持.dll
- 将未定义的引用交叉编译linux到windows
- 在没有运行库的情况下编译Linux下的c++