# 生成程序的位置 SET(EXECUTABLE_OUTPUT_PATH "${PROJECT_BINARY_DIR}/bin") # 源码目录 AUX_SOURCE_DIRECTORY(${PROJECT_SOURCE_DIR}/src MAIN_SRC) AUX_SOURCE_DIRECTORY(${PROJECT_SOURCE_DIR}/src/common COMMON) AUX_SOURCE_DIRECTORY(${PROJECT_SOURCE_DIR}/src/common/utils UTILS) AUX_SOURCE_DIRECTORY(${PROJECT_SOURCE_DIR}/src/common/hts HTS) AUX_SOURCE_DIRECTORY(${PROJECT_SOURCE_DIR}/src/sam SAM_SRC) AUX_SOURCE_DIRECTORY(${PROJECT_SOURCE_DIR}/src/sam/markdups SAM_MARKDUPS_SRC) # 头文件目录 INCLUDE_DIRECTORIES("${PROJECT_SOURCE_DIR}/src") INCLUDE_DIRECTORIES("${PROJECT_SOURCE_DIR}/lib") INCLUDE_DIRECTORIES("${PROJECT_SOURCE_DIR}/lib/htslib") # 链接库位置 LINK_DIRECTORIES("${PROJECT_SOURCE_DIR}/lib/htslib") # 编译生成的程序名称 set(PG_NAME "picard_cpp") # 为程序添加依赖关系 ADD_EXECUTABLE(${PG_NAME} ${MAIN_SRC} ${COMMON} ${UTILS} ${HTS} ${SAM_SRC} ${SAM_MARKDUPS_SRC}) # 链接库 TARGET_LINK_LIBRARIES(${PG_NAME} libhts.a) # 检测系统是否包含必需的库 # pthread库 find_package(Threads REQUIRED) if(THREADS_HAVE_PTHREAD_ARG) set_property(TARGET ${PG_NAME} PROPERTY COMPILE_OPTIONS "-pthread") set_property(TARGET ${PG_NAME} PROPERTY INTERFACE_COMPILE_OPTIONS "-pthread") endif() if(CMAKE_THREAD_LIBS_INIT) TARGET_LINK_LIBRARIES(${PG_NAME} "${CMAKE_THREAD_LIBS_INIT}") endif() # bzip2库 find_package(BZip2 REQUIRED) if(BZip2_FOUND) INCLUDE_DIRECTORIES(${BZIP2_INCLUDE_DIR}) TARGET_LINK_LIBRARIES(${PG_NAME} ${BZIP2_LIBRARIES}) endif() #openmp find_package(OpenMP) if(OPENMP_FOUND) set_target_properties(${PG_NAME} PROPERTIES COMPILE_OPTIONS ${OpenMP_CXX_FLAGS}) target_link_libraries(${PG_NAME} ${OpenMP_CXX_FLAGS}) endif() # 链接库 TARGET_LINK_LIBRARIES(${PG_NAME} -lz) TARGET_LINK_LIBRARIES(${PG_NAME} -lm) TARGET_LINK_LIBRARIES(${PG_NAME} -llzma) TARGET_LINK_LIBRARIES(${PG_NAME} -lbz2) TARGET_LINK_LIBRARIES(${PG_NAME} -lcurl) # 安装文件夹设置 INSTALL(TARGETS ${PG_NAME} RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION libstatic )