我正在尝试编译一个main.cpp
文件,该文件具有一些第三方库(有些是我自己构建的),但是我不能离开.o
,.a
或源目录中的.so
个文件。
我的测试和搜索将我带到一个怪异的解决方案,在该解决方案中,我应将每个.cpp
文件都包含到g++
命令行中。
./main$ g++ -o test.run -I./../src ./../src/*.cpp main.cpp
我发现了有关使用-L
编译器的g++
选项的一些信息,但是据我了解,它仅适用于静态归档库(.a
)或共享对象({{ 1}})。
只要这些库应该用作Arduino库,我不认为我应该将这些文件留在它们的目录中,而且,我也不想每次进行一些小的更改时都在那里重新编译制成。
有什么方法可以编译这些文件而无需手动添加每个.so
文件?考虑到可能并非必须包含所有文件(因为我的最终目标是构建一个模拟器)。也许像这样:
.cpp
在这种情况下,有关编译标签的任何提示也可能有用吗?
PS:我可以处理每次更改时的重新编译,./main$ g++ -o test.run -I./../src -L./../src/ main.cpp
没关系,但是由于我要使用一些预处理程序指令,所以我对此不太满意,因为有时必须准备在arduino中运行,有时在PC中运行;
PPS 。:我的最终目标是建立一个arduino simple port and software simulator,它已经可以工作了,这是我害怕将那些附加文件放在那里的主要原因,这些库必须在arduino上继续编译,并且必须留在arduino包含路径中。
我的测试目录树是:
make
.
├── main
│ └── main.cpp
└── src
├── source.cpp
└── source.h
文件内容:
main.cpp
#include <source.h>
int main()
{
Just one;
return 0;
}
文件内容:
source.h
#ifndef _SOURCE_H
#define _SOURCE_H
#include <iostream>
class Just
{
public:
Just();
};
#endif
文件内容:
souce.cpp