diff --git a/CMakeLists.txt b/CMakeLists.txt index a2f440c2d089b5d596ab59d5099c0066ef325614..178050dc79109d195b43c687de11c88974cfd286 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -166,11 +166,11 @@ include_directories("${CMAKE_CURRENT_BINARY_DIR}/proto") include_directories("${CMAKE_CURRENT_BINARY_DIR}/go/pserver/client/c") set(EXTERNAL_LIBS - ${GFLAGS_LIBRARIES} - ${GLOG_LIBRARIES} - ${CBLAS_LIBRARIES} - ${PROTOBUF_LIBRARY} - ${ZLIB_LIBRARIES} + gflags + glog + cblas + protobuf + zlib ${PYTHON_LIBRARIES} ) diff --git a/cmake/external/zlib.cmake b/cmake/external/zlib.cmake index e568880632c885ca77e8e609918ff643e7ed6e47..20b8506e678af4db6ccb65bef99d28e085a67bf2 100644 --- a/cmake/external/zlib.cmake +++ b/cmake/external/zlib.cmake @@ -28,7 +28,7 @@ ENDIF(WIN32) INCLUDE_DIRECTORIES(${ZLIB_INCLUDE_DIR}) ExternalProject_Add( - zlib + extern_zlib ${EXTERNAL_PROJECT_LOG_ARGS} GIT_REPOSITORY "https://github.com/madler/zlib.git" GIT_TAG "v1.2.8" @@ -49,9 +49,11 @@ ExternalProject_Add( -DCMAKE_BUILD_TYPE:STRING=${THIRD_PARTY_BUILD_TYPE} ) +ADD_LIBRARY(zlib STATIC IMPORTED GLOBAL) +SET_PROPERTY(TARGET zlib PROPERTY IMPORTED_LOCATION ${ZLIB_LIBRARIES}) +ADD_DEPENDENCIES(zlib extern_zlib) + LIST(APPEND external_project_dependencies zlib) -ADD_LIBRARY(zlib_target STATIC IMPORTED GLOBAL) -SET_PROPERTY(TARGET zlib_target PROPERTY IMPORTED_LOCATION ${ZLIB_LIBRARIES}) IF(WITH_C_API) INSTALL(DIRECTORY ${ZLIB_INCLUDE_DIR} DESTINATION third_party/zlib) diff --git a/cmake/generic.cmake b/cmake/generic.cmake index 12e07bd5f883d2cf100ece391bdf7d2bbcafc8f7..356da582d1f8b6a8858af90ccdf5af2100e5db87 100644 --- a/cmake/generic.cmake +++ b/cmake/generic.cmake @@ -104,7 +104,9 @@ function(merge_static_libs TARGET_NAME) foreach(lib ${libs}) list(APPEND libs_deps ${${lib}_LIB_DEPENDS}) endforeach() - list(REMOVE_DUPLICATES libs_deps) + if(libs_deps) + list(REMOVE_DUPLICATES libs_deps) + endif() # To produce a library we need at least one source file. # It is created by add_custom_command below and will helps @@ -191,10 +193,13 @@ function(cc_library TARGET_NAME) list(REMOVE_ITEM cc_library_DEPS warpctc) add_dependencies(${TARGET_NAME} warpctc) endif() - # Support linking flags: --whole-archive (Linux) / -force_load (MacOS) - target_circle_link_libraries(${TARGET_NAME} ${cc_library_DEPS}) if("${cc_library_DEPS}" MATCHES "ARCHIVE_START") + # Support linking flags: --whole-archive (Linux) / -force_load (MacOS). + # WARNING: Please don't use ARCHIVE_START&ARCHIVE_END if TARGET_NAME will be linked by other libraries. + target_circle_link_libraries(${TARGET_NAME} ${cc_library_DEPS}) list(REMOVE_ITEM cc_library_DEPS ARCHIVE_START ARCHIVE_END) + else() + target_link_libraries(${TARGET_NAME} ${cc_library_DEPS}) endif() add_dependencies(${TARGET_NAME} ${cc_library_DEPS}) endif()