subject-two/entry/src/main/cpp/sdk/CMakeLists.txt

75 lines
2.2 KiB
CMake
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

project(${JUDGE_TARGET_NAME})
set(MSG_NOTE "${MSG_NOTE} [${PROJECT_NAME}]")
message("${MSG_NOTE} this project name ${PROJECT_NAME}")
add_compile_definitions(JUDGE_COMPILE_TARGET_SDK) #编译目标工程定义
#add_compile_definitions(JUDGE_SHARED_EXPORT)
#add_compile_definitions(JUDGE_SHARED_IMPORT)
set(JUDGE_INCLUDE_CURRENT
${PROJECT_SOURCE_DIR}
)
file(GLOB_RECURSE JUDGE_SOURCE_CURRENT
${PROJECT_SOURCE_DIR}/*.h*
${PROJECT_SOURCE_DIR}/*.c*
)
set(JUDGE_LIB_DIR_CURRENT
)
set(JUDGE_LIB_FILE_CURRENT
)
source_group(\\ FILES ${JUDGE_SOURCE_CURRENT})
include_directories(
${JUDGE_INCLUDE}
${JUDGE_INCLUDE_PLATFORM}
${JUDGE_INCLUDE_CURRENT}
)
link_directories(
${JUDGE_LIB_DIR}
${JUDGE_LIB_DIR_PLATFORM}
${JUDGE_LIB_DIR_CURRENT}
)
if(BUILD_SHARED_LIBS)
message("${MSG_NOTE} BUILD_SHARED_LIBS=${BUILD_SHARED_LIBS} build shared dll")
add_compile_definitions(JUDGE_SHARED_EXPORT) #cmake version must be greater than 3.12.0
else()
message("${MSG_NOTE} BUILD_SHARED_LIBS=${BUILD_SHARED_LIBS} build static lib")
endif()
# BUILD_SHARED_LIBS ON的时候生成的是隐式调用的动态库 如果生成显示调用动态库 加上SHARED参数
add_library(${JUDGE_TARGET_NAME}
${JUDGE_SOURCE}
${JUDGE_SOURCE_PLATFORM}
${JUDGE_SOURCE_CURRENT}
)
# PUBLIC 在public后面的库会被Link到你的target中并且里面的符号也会被导出提供给第三方使用。
# PRIVATE 在private后面的库仅被link到你的target中并且终结掉第三方不能感知你调了啥库
# INTERFACE 在interface后面引入的库不会被链接到你的target中只会导出符号
# 本质上可以使用public 来解决,可以减少坑。
target_link_libraries(${JUDGE_TARGET_NAME} PUBLIC
${JUDGE_LIB_FILE}
${JUDGE_LIB_FILE_PLATFORM}
${JUDGE_LIB_FILE_CURRENT}
)
# 设置动态库的版本号
#set(CMAKE_SHARED_LIBRARY_SONAME_VERSION 1)
#CMAKE_STATIC_LIBRARY_SUFFIX STREQUAL "lib" OR
if(CMAKE_SHARED_LIBRARY_PREFIX STREQUAL lib)
set_target_properties(${JUDGE_TARGET_NAME} PROPERTIES OUTPUT_NAME ${JUDGE_TARGET_NAME}) #VERSION 1.0.0 SOVERSION 1.0
else()
set_target_properties(${JUDGE_TARGET_NAME} PROPERTIES OUTPUT_NAME lib${JUDGE_TARGET_NAME}) #VERSION 1.0.0 SOVERSION 1.0
endif()