事情的起因是我的邏輯代碼使用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
)