事情的起因是我的逻辑代码使用cmake编译的,觉着cmake的开发速度会更快(其实是看不懂华为那层层套用的Makefile -_-).
1. 首先就是先配置交叉编译链,具体参考https://www.cnblogs.com/pied/p/8805883.html
我的toolChain.cmake配置如下,编译时记得用 cmake DCMAKE_TOOLCHAIN_FILE=../toolChain.cmake ..,
../toolChain.cmake为该文件放置的路径
SET(CMAKE_SYSTEM_NAME Linux)
SET(CMAKE_C_COMPILER /opt/hisi-linux/x86-arm/arm-himix200-linux/bin/arm-himix200-linux-gcc)
SET(CMAKE_CXX_COMPILER /opt/hisi-linux/x86-arm/arm-himix200-linux/bin/arm-himix200-linux-g++)
#根目录
set(CMAKE_FIND_ROOT_PATH )
# search for programs in the build host directories (not necessary)
SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
# for libraries and headers in the target directories
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
2. 增加外部库文件到CMakeLists.txt
set( IVE_SAMPLE_DIR /home/user/Documents/Hi3519AV100/Hi3519AV100R001C02SPC010-user/Hi3519AV100_SDK_V2.0.1.0/smp/a53_linux/mpp/sample/svp/common/)
add_subdirectory( ${IVE_SAMPLE_DIR}/ ive_sample.out)
include_directories(
${IVE_SAMPLE_DIR}
${IncDir}
)
3. 链接海思静态库,需要链接的库可以参考mpp/sample下的Makefile.param文件, 截取如下
SENSOR_LIBS := $(REL_LIB)/lib_hiae.a
SENSOR_LIBS += $(REL_LIB)/libisp.a
SENSOR_LIBS += $(REL_LIB)/lib_hidehaze.a
SENSOR_LIBS += $(REL_LIB)/lib_hidrc.a
SENSOR_LIBS += $(REL_LIB)/lib_hildci.a
SENSOR_LIBS += $(REL_LIB)/lib_hiawb.a
SENSOR_LIBS += $(REL_LIB)/libsns_imx290.a
SENSOR_LIBS += $(REL_LIB)/libsns_imx290_slave.a
SENSOR_LIBS += $(REL_LIB)/libsns_imx334.a
SENSOR_LIBS += $(REL_LIB)/libsns_imx307.a
我的CMakeList.txt配置如下,仅供参考:
target_link_libraries(MYPROJECT pthread -ldl
${LIB_DIR}/libmpi.a
${LIB_DIR}/libsecurec.a
${LIB_DIR}/libupvqe.a
${LIB_DIR}/libdnvqe.a
${LIB_DIR}/libVoiceEngine.a
${LIB_DIR}/libhdmi.a
${LIB_DIR}/libdsp.a
${LIB_DIR}/libsns_imx290.a
${LIB_DIR}/libsns_imx290_slave.a
${LIB_DIR}/libsns_imx307.a
${LIB_DIR}/libsns_imx334.a
${LIB_DIR}/libisp.a
${LIB_DIR}/lib_hiae.a
${LIB_DIR}/lib_hiawb.a
${LIB_DIR}/lib_hildci.a
${LIB_DIR}/lib_hidrc.a
${LIB_DIR}/lib_hidehaze.a
${LIB_DIR}/libive.a
${LIB_DIR}/libmd.a
${LIB_DIR}/libnnie.a
)