目录
安装CMake
在网上随便找个教程照着安装就行了,不再赘述。
安装MinGW
参考这篇博客。从MinGW官网下载的安装包在安装的时候总是提示失败,从该博客作者提供的网盘直接下载安装好的MinGW文件亲测可用。
安装后需要手动将MinGW的bin文件夹添加进环境变量。然后将bin文件夹中的mingw32-make.exe拷贝一份出来重命名为make.exe,方便后续编译使用。
编写CMakeLists.txt
结构参考如下代码
cmake_minimum_required(VERSION 3.10)
project(my_dtln)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
set(PATH ${PROJECT_SOURCE_DIR})
SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O3 -Wall -g2 -ggdb")
SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall -fPIC")
SET(CMAKE_BUILD_TYPE "Release")
message(${PATH})
SET(CROSS "OFF")
if(CROSS STREQUAL "ON")
set(CMAKE_C_COMPILER aarch64-linux-gnu-gcc)
set(CMAKE_CXX_COMPILER aarch64-linux-gnu-g++)
else()
set(CMAKE_C_COMPILER gcc)
set(CMAKE_CXX_COMPILER g++)
endif()
set(DTLN_DIR D:\\path\\to\\DTLN_C_cross)
include_directories(${DTLN_DIR}/)
include_directories(${DTLN_DIR}/tflitedist/include)
include_directories(${DTLN_DIR}/tflitedist/include/tensorflow/lite/c)
add_executable(dtln main.cpp)
add_library(libdtln STATIC DTLN.cpp)
add_library(libdtlnshared SHARED DTLN.cpp)
if(CROSS STREQUAL "ON")
target_link_libraries(dtln ${DTLN_DIR}/tflitedist/libs/cross/libtensorflowlite_c.so)
else()
target_link_libraries(dtln ${DTLN_DIR}/tflitedist/libs/windows_x86_64/tensorflowlite_c.dll)
target_link_libraries(libdtlnshared ${DTLN_DIR}/tflitedist/libs/windows_x86_64/tensorflowlite_c.dll)
endif()
注:
构建静态库的时候不需要将所需的tflite动态库链接进去,我在linux上构建动态库的时候也不需要链接tflite动态库。但在windows上构建动态库的时候会报错(unreference to 一大堆东西),需要将tflite动态库链接进去才能构建。
编译一条龙
md test_build
cd test_build
cmake -G "MinGW Makefiles" .. && make -j8
从下图可以看到,可执行文件、静态库、动态库都编译成功。
标签:set,CMAKE,DTLN,windows,c++,CXX,MinGW,CMake,DIR From: https://www.cnblogs.com/KAWAKO/p/17079875.html