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

75 lines
2.2 KiB
CMake
Raw Normal View History

2024-07-11 16:16:43 +08:00
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()