1 Star 1 Fork 49

ieee820 / feature_se

forked from 10km / feature_se 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
CMakeLists.txt 4.50 KB
一键复制 编辑 原始数据 按行查看 历史
10km 提交于 2018-05-07 13:56 . commit
#cmake file for library fse(feature search engine)
#author:guyadong
#created:2018/04/13
include (CMakePackageConfigHelpers)
# define RUNTIME_INSTALL_DIR LIBRARY_INSTALL_DIR INCLUDE_INSTALL_DIR CONFIG_INSTALL_DIR
set (RUNTIME_INSTALL_DIR bin)
set (LIBRARY_INSTALL_DIR lib)
set (INCLUDE_INSTALL_DIR include)
if(WIN32 AND NOT CYGWIN)
set (CONFIG_INSTALL_DIR cmake)
else()
set (CONFIG_INSTALL_DIR ${LIBRARY_INSTALL_DIR}/cmake/fse)
endif()
find_package(Cassdk REQUIRED)
# 定义所有的源文件列表
set(_SOURCE_FILES
OverTableManager.cpp
HashMapCl.cpp
ICodeManager.cpp
ICodeManagerCPU.cpp
CodeManagerFactory.cpp
TopKCodeBean.cpp
feature_se.cpp
${DEPENDENT_SOURCE_DIR}/RWLock.cpp
${DEPENDENT_SOURCE_DIR}/ThreadPool.cpp
)
# 用于外部调用的公共头文件
set (_PUBLIC_HEADERS
config.h
feature_data_types.h
cross_define.h
feature_se.h
)
set (_FSE_TARGETS fse_cas_static fse_cas)
# CASSDK版本的CodeMgr实现
add_library(fse_cas_static STATIC ${_SOURCE_FILES})
add_library(fse_cas SHARED ${_SOURCE_FILES})
use_static_library(fse_cas)
if(MSVC)
add_library(fse_cas_static_mt STATIC ${_SOURCE_FILES})
with_mt_if_msvc(fse_cas_static_mt)
list(APPEND _FSE_TARGETS fse_cas_static_mt)
endif(MSVC)
#########################3
# 设置项目属性
function (define_fse_target target)
if(NOT TARGET ${target})
return ()
endif()
# MSVC Debug 编译时生成包含用于调试器的完整符号调试信息的 .obj 文件
# see also https://msdn.microsoft.com/zh-cn/library/958x11bc.aspx
target_compile_options(${target} PRIVATE $<$<AND:$<CXX_COMPILER_ID:MSVC>,$<CONFIG:Debug>>:/Z7>)
get_target_property(_type ${target} TYPE)
if(${_type} STREQUAL "SHARED_LIBRARY")
set(_is_shared TRUE)
set(_is_shared_str "1")
else()
set(_is_shared FALSE)
set(_is_shared_str "0")
endif()
target_include_directories (${target}
INTERFACE "$<INSTALL_INTERFACE:include>"
)
# 加入CASSDK 版本定义,编译库时必须加FSE_EXPORTS定义
target_compile_definitions (${target}
PRIVATE FSE_EXPORTS
PUBLIC FSE_IS_A_DLL=${_is_shared_str}
PUBLIC CASSDK
)
set_target_properties (${target} PROPERTIES
PUBLIC_HEADER "${_PUBLIC_HEADERS}"
VERSION ${PROJECT_VERSION}
SOVERSION ${PROJECT_VERSION_MAJOR}
DEBUG_POSTFIX _d
)
set(_link_libraries cassdk_THFeature)
if(CMAKE_SYSTEM_NAME MATCHES "Linux")
list(APPEND _link_libraries -pthread -ldl)
endif()
target_link_libraries(${target} PRIVATE $<BUILD_INTERFACE:common_source>)
if(_is_shared)
target_link_libraries(${target} PRIVATE ${_link_libraries})
else()
target_link_libraries(${target} PUBLIC ${_link_libraries})
set_target_properties (${target} PROPERTIES INTERFACE_POSITION_INDEPENDENT_CODE ON
POSITION_INDEPENDENT_CODE ON)
endif()
endfunction()
#####################
define_fse_target(fse_cas_static)
define_fse_target(fse_cas_static_mt)
define_fse_target(fse_cas)
# 测试程序
add_executable(fctest EXCLUDE_FROM_ALL FeatureCompareSpeedTest.cpp)
add_executable(fctest2 EXCLUDE_FROM_ALL FeatureCompareVeracityTest.cpp)
target_link_libraries(fctest common_source)
target_link_libraries(fctest2 common_source $<$<CXX_COMPILER_ID:GNU>:-lpthread>)
target_compile_options(fctest2 PRIVATE $<$<CXX_COMPILER_ID:MSVC>:/utf-8>)
# ----------------------------------------------------------------------------
set (fse_DEPENDENCY "find_dependency(Cassdk)")
configure_package_config_file (${PROJECT_SOURCE_DIR}/cmake/config.cmake.in
${CMAKE_CURRENT_BINARY_DIR}/fse-config.cmake
INSTALL_DESTINATION ${CONFIG_INSTALL_DIR}
NO_CHECK_REQUIRED_COMPONENTS_MACRO)
write_basic_package_version_file (fse-config-version.cmake VERSION
${PROJECT_VERSION} COMPATIBILITY SameMajorVersion)
########安装脚本##########
install(TARGETS ${_FSE_TARGETS} EXPORT fse-targets
RUNTIME DESTINATION ${RUNTIME_INSTALL_DIR}
LIBRARY DESTINATION ${LIBRARY_INSTALL_DIR}
ARCHIVE DESTINATION ${LIBRARY_INSTALL_DIR}
PUBLIC_HEADER DESTINATION ${INCLUDE_INSTALL_DIR}/feature_se
)
foreach(_target ${_FSE_TARGETS})
# 如果是动态库则安装对应的pdb文件
install(FILES $<$<STREQUAL:SHARED_LIBRARY,$<TARGET_PROPERTY:${_target},TYPE>>:$<TARGET_PDB_FILE:${_target}>> DESTINATION ${RUNTIME_INSTALL_DIR} OPTIONAL)
endforeach(_target)
install (FILES
${CMAKE_CURRENT_BINARY_DIR}/fse-config.cmake
${CMAKE_CURRENT_BINARY_DIR}/fse-config-version.cmake
DESTINATION ${CONFIG_INSTALL_DIR}
)
install(EXPORT fse-targets NAMESPACE gdface:: DESTINATION ${CONFIG_INSTALL_DIR})
# Cleanup temporary variables.
set(_PUBLIC_HEADERS)
set(_SOURCE_FILES)
set(_FSE_TARGETS)
C++
1
https://gitee.com/ieee820_jjyang/feature_se.git
git@gitee.com:ieee820_jjyang/feature_se.git
ieee820_jjyang
feature_se
feature_se
master

搜索帮助

53164aa7 5694891 3bd8fe86 5694891