CMakeLists 在实际项目中的编写实例

336 阅读1分钟

最近在项目中经常需要编写CMakeLists,在此记录一下正式项目中是如何编写使用的,特此记录便于日后查阅。

project("device-authentication")

cmake_minimum_required(VERSION 3.5)

INCLUDE_DIRECTORIES(
	../include/
    ../../src/net/mbedtls/include
	../../src/smalgo/sms4/include
)

SET(my_src_crypto
    ../../src/net/mbedtls/library/aes.c
    ../../src/net/mbedtls/library/aesni.c
    ../../src/net/mbedtls/library/base64.c
    ../../src/net/mbedtls/library/rsa.c
    ../../src/net/mbedtls/library/rsa_internal.c
    ../../src/net/mbedtls/library/entropy.c
    ../../src/net/mbedtls/library/entropy_poll.c
    ../../src/net/mbedtls/library/bignum.c
    ../../src/net/mbedtls/library/sha1.c
    ../../src/net/mbedtls/library/sha256.c
    ../../src/net/mbedtls/library/sha512.c
    ../../src/net/mbedtls/library/md.c
    ../../src/net/mbedtls/library/md5.c
    ../../src/net/mbedtls/library/md_wrap.c
    ../../src/net/mbedtls/library/ripemd160.c
    ../../src/net/mbedtls/library/platform_util.c
    ../../src/net/mbedtls/library/oid.c
    ../../src/net/mbedtls/library/timing.c
    ../../src/net/mbedtls/library/net_sockets.c
    ../../src/smalgo/sms4/cbc128.c
    ../../src/smalgo/sms4/sms4_cbc.c
    ../../src/smalgo/sms4/sms4_common.c
    ../../src/smalgo/sms4/sms4_enc.c
    ../../src/smalgo/sms4/sms4_setkey.c
)
SET(my_src_crypto_dbg
    ../../src/net/mbedtls/library/ctr_drbg.c
)

SET(SRC_LIST_ENCRYPT_BIN
    oem_porting.c
    sdk_porting.c
    authref.c
    test.c
    ${my_src_crypto}
    ${my_src_crypto_dbg}
    )

SET(SRC_LIST_DECRYPT_LIB 
    oem_porting.c
    sdk_porting.c
    authref.c
    auth.c
    ${my_src_crypto}
    ${my_src_crypto_dbg}
    )

SET(SRC_LIST_PRODUCT_LIB
    auth_product.h
    auth_product.c
    )

SET(SRC_LIST_PRODUCT_AUTH_BIN
    auth_product.h
    test_product.c
    )

IF(ENV STREQUAL LINUX)
    LINK_DIRECTORIES(../device/cmake-build-debug)
ENDIF()

IF(ENV STREQUAL ANDROID_V8)
    LINK_DIRECTORIES(./v8)
ENDIF()

IF(ENV STREQUAL ANDROID_V7)
    LINK_DIRECTORIES(./v7)
ENDIF()

IF(NO_LOCAL_KEY STREQUAL ON)
    ADD_DEFINITIONS(-DNO_LOCAL_KEY)
ENDIF()

IF(RANDOM_DEVICE_ID STREQUAL ON)
    ADD_DEFINITIONS(-DNO_LOCAL_KEY)
    ADD_DEFINITIONS(-DRANDOM_DEVICE_ID)
ENDIF()

ADD_DEFINITIONS(-fPIC)
#ADD_LIBRARY(authoal STATIC ${SRC_LIST_DECRYPT_LIB})
#ADD_LIBRARY(authoal SHARED ${SRC_LIST_DECRYPT_LIB})
ADD_EXECUTABLE(eaidkAuth ${SRC_LIST_ENCRYPT_BIN})
#ADD_LIBRARY(productoal SHARED ${SRC_LIST_PRODUCT_LIB})
#TARGET_LINK_LIBRARIES(productoal -lauthoal)
#ADD_LIBRARY(productoal SHARED ${SRC_LIST_PRODUCT_LIB})
#ADD_EXECUTABLE(productAuth ${SRC_LIST_PRODUCT_AUTH_BIN})
#TARGET_LINK_LIBRARIES(productAuth -lauthoal)

到此 CMakeLists 在实际项目中的编写实例介绍完成。