1 在主程序所在目录的CMakeListstxt中定义要编译的主程序和输出的可执行文件名:
#定义主程序名称
add_executable(输出的可执行文件名称 源文件列表)
#定义链接库
target_link_libraries(输出的可执行文件名称 链接库1 链接库2 )
2在库文件所在目录中的CMakeListstxt中告诉cmake将其所有库文件编译成动态库:
#通过set命令自定义变量LIB_SRC包括那些源文件,这些文件将编译到动态库
set (LIB_SRC
libsrc1cpp
libsrc2cpp
libsrc3cpp
)
#将上述文件编译到库中
add_library (库名称 SHARED ${LIB_SRC})
#定义库的输出位置, 如果在根目录下的CMakeListstxt中已经定义,此处可注释掉。
set(LIBRARY_OUTPUT_PATH 具体的目录位置)
子程序和主程序写在同一个文件里就可以了。
如果分开写,那么分别编译,然后一起链接。代码上不需要任何改动。跟同一个文件一模一样。
至于如何建立工程,这是 *** 作的问题。
Fortran 是一门语言,本身没有任何 *** 作问题。
全球支持Fortran语言的编译器有数十种,不同的编译器又使用若干种不同的编译环境。
例如 Compaq Visual Fortran,Intel Fortran 分别使用 VC6 和 VS 作为编译环境。Ftn95有自己的集成环境,叫Plato。甚至一些开源的,开放的编译环境经过配置,都可以使用Fortran的各种编译器。
这些 *** 作方法问题,也因为不同的编译环境而不同。
你的问题,就好像问:“英语如何查短句” 一样。英语本身是语言,不存在 *** 作问题。
如果你要问,也应该类似这样问:“金山词霸如何查短句”??
类似的,你的问题,也应该是类似:“Compaq Visual Fortran 怎么建立工程” 或者其他编译器如何如何。
举例文件:addc
gcc -fPIC -c addc /生成o文件
gcc -shared addo -o libmathso /加载addo到math动态库
gcc testc -L -Lmath /testc 为主程序
另外;配置动态库加载器环境变量:
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:
1、如果,在一个c主程序中,以include形式包含了其他所有的引用文件,在编译过程中,编译器首先会将这些文件合并到一个临时文件中,然后再对这个临时文件进行编译。
2、如果,是作为一个工程,编译器会分别编译各个独立的文件(如果文件中有include按照上一步进行),然后再将编译好的初步结果用链接程序连到一起。
简单的说,每一个c或者cc都是一个编译单元,每一个编译单元编辑的结果是一个o或者obj之类的中间文件,至于是否是多文件,不需要关心,但是要保证不同的编译单元之间不要有重复的符号,这就是要避免重复包含。
每一个编译单元生成的目标文件o或者obj都会引用一些不在本目标文件中的符号,这些符号定义在别的o或者obj文件中, 链接器把他们联系在一起,所有的符号也就都有定义了,编译链接简单说来就是这样。
以上就是关于如何使用cmake编译软件项目3全部的内容,包括:如何使用cmake编译软件项目3、fortran怎么编写包含子程序的主程序子程序和主程序是两个独立的文件,这该怎么编写怎么建立工程、怎样将自己做的动态链接库“静态”编译到可执行文件里等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)