一、核心说明
如需使用 Windows 静态库编译 TUTK SDK 示例项目,需修改两个关键文件:
- 项目对应的
CMakeLists.txt(添加静态库编译宏定义); - 编译脚本
build.bat(指定静态库目录)。
二、修改 CMakeLists.txt
需分别修改
Sample_AVAPIs 和 Sample_IOTCAPIs 项目的 CMake 配置文件,核心修改:添加 -DIOTC_STATIC_LIB 宏定义。2.1 Sample_AVAPIs 项目 CMakeLists.txt
完整修改后代码(关键修改已标注):
project(AVAPIs_Sample)
cmake_minimum_required(VERSION 2.8)
# 关键修改:添加静态库编译宏定义
add_definitions( -DIOTC_STATIC_LIB )
#set(ROOT_DIR "${CMAKE_SOURCE_DIR}/../../../")
include_directories(${ROOT_DIR}/Include)
include_directories(${CMAKE_SOURCE_DIR})
include_directories(${CMAKE_SOURCE_DIR}/extension)
find_library(AVAPIs_sT AVAPIs_sT HINTS ${LIB_DIR})
find_library(IOTCAPIs_sT IOTCAPIs_sT HINTS ${LIB_DIR})
find_library(json-c json-c HINTS ${LIB_DIR})
find_library(libcurl libcurl HINTS ${LIB_DIR})
find_library(libcrypto libcrypto HINTS ${LIB_DIR})
find_library(zlibstatic zlibstatic HINTS ${LIB_DIR})
SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG "${OUTPUT_DIR}")
SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE "${OUTPUT_DIR}")
SET( CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG "${OUTPUT_DIR}")
SET( CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE "${OUTPUT_DIR}")
add_executable(AVAPIs_Client AVAPIs_Client.c extension/demoOption/demoOption.c)
target_link_libraries(AVAPIs_Client AVAPIs_sT IOTCAPIs_sT json-c libcurl libcrypto libssl Crypt32 legacy_stdio_definitions Ws2_32 winmm wldap32)
2.2 Sample_IOTCAPIs 项目 CMakeLists.txt
完整修改后代码(关键修改已标注):
project(IOTCAPIs_Sample)
cmake_minimum_required(VERSION 2.8)
# 关键修改:添加静态库编译宏定义
add_definitions( -DIOTC_STATIC_LIB )
#set(ROOT_DIR "${CMAKE_SOURCE_DIR}/../../../")
include_directories(${ROOT_DIR}/Include)
include_directories(${CMAKE_SOURCE_DIR})
find_library(IOTCAPIs_sT IOTCAPIs_sT HINTS ${LIB_DIR})
find_library(json-c json-c HINTS ${LIB_DIR})
find_library(libcurl libcurl HINTS ${LIB_DIR})
find_library(libcrypto libcrypto HINTS ${LIB_DIR})
find_library(zlibstatic zlibstatic HINTS ${LIB_DIR})
SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG "${OUTPUT_DIR}")
SET( CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE "${OUTPUT_DIR}")
SET( CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG "${OUTPUT_DIR}")
SET( CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE "${OUTPUT_DIR}")
add_executable(IOTCAPIs_Device IOTCAPIs_Device.c)
target_link_libraries(IOTCAPIs_Device IOTCAPIs_sT json-c libcurl libcrypto libssl Crypt32 legacy_stdio_definitions Ws2_32 winmm wldap32)
add_executable(IOTCAPIs_Client IOTCAPIs_Client.c)
target_link_libraries(IOTCAPIs_Client IOTCAPIs_sT json-c libcurl libcrypto libssl Crypt32 legacy_stdio_definitions Ws2_32 winmm wldap32)
三、修改 build.bat 编译脚本
核心修改:将动态库目录改为静态库目录
Release_Static。3.1 关键修改点
原配置(动态库):
set LibDir=%RootDir%\Lib\Windows\x64\Release\新配置(静态库):set LibDir=%RootDir%\Lib\Windows\x64\Release_Static\
3.2 完整 build.bat 脚本
@echo off
set CurDir=%cd%\
set RootDir=%CurDir%\..\..\..\
# 关键修改:指定静态库目录
set LibDir=%RootDir%\Lib\Windows\x64\Release_Static\
set BuildDir=%CurDir%\build\
set OutputDir=%CurDir%\output\
rd /s /q %OutputDir%
mkdir %BuildDir%
cd %BuildDir%
xcopy %LibDir%\*.lib %BuildDir% /E /Y
cmake -DROOT_DIR=%RootDir% -DOUTPUT_DIR=%OutputDir% -DLIB_DIR=%LibDir% -DCMAKE_GENERATOR_PLATFORM=x64 .. || exit /b 101
cmake --build . --config Release || exit /b 102
cd ..
# 如果后续需要用 VS 开发项目,需注释掉下面这行
#rd /s /q %BuildDir%
