Linux 下 CMakeList 编译 CUDA 找不到 “XXX.so” 文件问题
笔者使用Nvidia Xavior 对其提供的例程进行改造。例程是直接使用makefile进行编译,由于我需要嵌入自己写的CUDA程序,遂想使用CMakeList,在改写过程中遇到错误。
例程中的Makefile部分如下:
CPPFLAGS += -std = c++11 \
-I"$(TOP_DIR)/include" \
-I"$(TOP_DIR)/include/libjpeg-8b" \
-I"$(ALGO_CUDA_DIR) \
-I"$(ALGO_TRT_DIR)" \
#这里还有一些目录,不写了
LDFLAGS += \
-lpthread -lv4l2 -lEGL -lGLESv2 -lX11 \
-lnvbuf_utils -lnvjpeg -lnvosd -ldm \
-lcuda -lcudart \
-lnvinfer -lnvparsers \
-L"$(TARGET_ROOTFS)/$(CUDA_PATH)/lib64" \
-L"$(TARGET_ROOTFS)/usr/lib/$(TEGRA_ARMABI)" \
-L"$(TARGET_ROOTFS)/usr/lib/$(TEGRA_ARMABI)/tegra"
其中cppflages指所需cpp目录和编译选项,ldflags指一些相关的库文件调用,如 “-lpthread” 指 libpthread.so 文件,“-lv4l2” 指 libv4l2.so 文件。
改写的CMakeList.txt部分伪码如下:
cmake_minimum_required(VERSION 3.0)
project(test_CUDA)
include(./FindCUDA)
include_direactories(
//所有.h目录
)
file(GLOB source "上述cpp文件目录")
add_library(tegracom ${source})
cuda_add_executable(test_cuda \
main.cpp
test.cu)
target_link_li