32 lines
1.1 KiB
CMake
32 lines
1.1 KiB
CMake
cmake_minimum_required(VERSION 3.13)
|
||
project(YitIdGen)
|
||
set(CMAKE_C_STANDARD 11)
|
||
|
||
#set(CMAKE_BUILD_TYPE DEBUG)
|
||
#set(CMAKE_BUILD_TYPE RELEASE)
|
||
|
||
aux_source_directory(. DIR_SRCS)
|
||
add_subdirectory(idgen)
|
||
|
||
# 在idgen部分增加-fPIC选项
|
||
# 原因是由于在生成静态库 libidgen.a 时,SnowWorkerM1.c.o中的某些符号(这里是 ThreadMutex)没有被正确地编译为位置无关代码(Position Independent Code, PIC)。对于共享库,所有包含的代码都必须是位置无关的,以便能够在内存中任意位置加载
|
||
target_compile_options(idgen PRIVATE -fPIC)
|
||
|
||
#编译动态库
|
||
set(LIB_SRC YitIdHelper.h YitIdHelper.c)
|
||
add_library(YitIdGenLib SHARED ${LIB_SRC})
|
||
target_link_libraries(YitIdGenLib idgen)
|
||
set_target_properties(YitIdGenLib PROPERTIES
|
||
LINKER_LANGUAGE C
|
||
OUTPUT_NAME "yitidgenc"
|
||
PREFIX "")
|
||
|
||
# 编译执行文件
|
||
# set(LIB_SRC YitIdHelper.h YitIdHelper.c)
|
||
add_library(YitIdHelper ${LIB_SRC})
|
||
add_executable(YitIdGen main.c)
|
||
target_link_libraries(YitIdGen YitIdHelper pthread)
|
||
target_link_libraries(YitIdGen idgen pthread)
|
||
|
||
|