专栏算法工具链J6OE包docker环境CMakeLists.txt编写

J6OE包docker环境CMakeLists.txt编写

kotei左文亮2024-06-27
78
0

一、CMakeLists.txt基本语法

语法格式:指令(参数1 参数2...)

1,参数间用空格或分号隔开。

2,指令大小写无关,参数和变量大小写相关。

3,变量用${}方式取值,但在if语句中直接用变量名。

二、CMakeLists.txt重要指令

1,cmake_minimum_required :指定CMake最小版本要求

语法: cmake_minimum_required(VERSION VersionNumber)

例:#CMake最小版本要求为2.8.3

2,project - 定义工程名称,并可指定工程支持的语言

语法:project(projectname [CXX] [C] [Java])

3.set - 定义变量

语法:set(VAR [VALUE] [CACHE TYPE DOCSTRING [FORCE]])

例:#定义SRC变量,其值为hello.cpp bye.cpp

4.include_directories - 添加多个指定的头文件搜索路径 4.include_directories - 添加多个指定的头文件搜索路径 --> 相当于gcc的-I选项

语法:include_directories(dir1 dir2...)

5.link_directories - 添加多个指定的库文件搜索路径 5.link_directories - 添加多个指定的库文件搜索路径 --> 相当于gcc的-L选项

语法:link_directories(dir1 dir2...)

6.add_library - 生成库文件

语法:add_library(libname [SHARED|STATIC|MODULE] source1 source2...)

例:#通过SRC变量生成libsort.so动态库

7.add_compile_options - 添加编译选项

语法:add_compile_options(...)

例:#添加编译选项 -g -O2

add_compile_options(-g -O2)

8.add_executable - 生成可执行文件

语法:add_executable(exename src1 src2...)

例:#编译main.cpp func.cpp生成test

9.target_link_libraries - 为target添加需要链接的库 9.target_link_libraries - 为target添加需要链接的库 --> 相当于gcc的-l选项

例:#将libsort.a(so)链接到可执行文件test

注意:添加库之前target必须已经生成,即add_executable(test)必须在target_link_libraries(test)前面.

10.add_subdirectory - 向当前工程添加存放源文件的子目录,并可指定二进制文件存放的位置

语法:add_subdirectory(src_dir [binary_dir] [EXCLUDE_FROM_ALL])

#添加src子目录,src中需有一个CMakeLists.txt

11.aux_source_directory - 发现一个目录下所有源文件并将列表存储在一个变量中

语法:aux_source_directory(dir VARIABLE)

#定义SRC变量,其值为当前目录下所有源文件

三、J6OE包docker编写实践

在J6上调用BPU进行推理,运行的程序主要调用libhbucp.so这个库文件,所以在CMakelist.txt里要添加相关的头文件和源文件路径。

1.设置根路径:

2.包含头文件目录:

3.链接库文件目录:

4.链接库文件:

四、总结

以上都是个人在实际应用中的经验总结,使用BPU进行推理一定要搞清楚自己调用的库文件和头文件。然后按照CMaleList.txt的编写规则编写到对应的CMaleList.txt中进行编译。更多CMaleList.txt编写可参考如下链接:https://blog.csdn.net/m0_67168421/article/details/128685804

算法工具链
征程6技术深度解析官方教程
评论0
0/1000