cmake编译单多文件

cmake编译单多文件,第1张

在该路径下会生成一个文件夹(CMakeFiles),三个文件(Makefile, CMakeCache.txt, cmake_install.cmake)以及一个程序(addition)

此时的文件目录结构为

该项目该依赖于MPI,GDAL和cereal库。MPI和GDAL库自行编译

1.配置各种编译的时候,可以使用set设置,更多详情,请自行搜索。

2.头文件的包含请使用include_directories。

3.搜索源文件请使用aux_source_directory。

4.第三方库的查找使用 find_package。例如我们想找GDAL, 那么 find_package(GDAL), 它会在 /usr/share/cmake/Modules 文件中的FindGDAL.cmake文件中去找GDAL的各种信息。前提是GDAL 是make install的, FindGDAL.cmake中才会有GDAL的各种信息。否则的话,我们需要set自行制定GDAL的相关信息。

5.第三方库的链接用target_link_libraries。

注意,也可以将该项目中的某个文件夹编译成静态库,然后在于其余源文件链接,可以参考: https://blog.csdn.net/cliukai/article/details/90670243

简单的多文件编译: https://blog.csdn.net/cliukai/article/details/90670243

有第三方库的文件编译: https://blog.csdn.net/fb_help/article/details/79593037

vc++6.0实现多文件程序:

1、必须创建工程,并将文件加入同一工程下;2、必须有自定义头文件(.h)将多个源文件(.c/.cpp)关联起来,并将函数定义放在头文件中。

多个源文件需要在这个窗口创建:

创建完毕后如图:

1、如果,在一个c主程序中,以include形式包含了其他所有的引用文件,在编译过程中,编译器首先会将这些文件合并到一个临时文件中,然后再对这个临时文件进行编译。

2、如果,是作为一个工程,编译器会分别编译各个独立的文件(如果文件中有include按照上一步进行),然后再将编译好的初步结果用链接程序连到一起。

简单的说,每一个.c或者.cc都是一个编译单元,每一个编译单元编辑的结果是一个.o或者obj之类的中间文件,至于是否是多文件,不需要关心,但是要保证不同的编译单元之间不要有重复的符号,这就是要避免重复包含。

每一个编译单元生成的目标文件.o或者obj都会引用一些不在本目标文件中的符号,这些符号定义在别的.o或者.obj文件中, 链接器把他们联系在一起,所有的符号也就都有定义了,编译链接简单说来就是这样。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12015704.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存