Skip to content

Commit

Permalink
fix windows build CMakeLists.txt
Browse files Browse the repository at this point in the history
  • Loading branch information
cheqi committed Oct 10, 2018
1 parent 5c81f37 commit bee17ac
Show file tree
Hide file tree
Showing 4 changed files with 69 additions and 97 deletions.
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -62,3 +62,8 @@ dkms.conf
/AnnService/Server.vcxproj.user
/AnnService/SocketLib.vcxproj.user
/PythonWrapper/PythonCore.vcxproj.user
/build
/PythonWrapper/inc/ClientInterface_wrap.cxx
/PythonWrapper/inc/CoreInterface_wrap.cxx
/PythonWrapper/inc/SPTAG.py
/PythonWrapper/inc/SPTAGClient.py
39 changes: 10 additions & 29 deletions AnnService/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,12 +1,3 @@
file(GLOB PROJ_HDR_FILES ${PROJECT_SOURCE_DIR}/AnnService/inc/Core/*.h ${PROJECT_SOURCE_DIR}/AnnService/inc/Core/BKT/*.h ${PROJECT_SOURCE_DIR}/AnnService/inc/Helper/*.h)
file(GLOB OTH_HDR_FILES)
set(HDR_FILES ${PROJ_HDR_FILES} ${OTH_HDR_FILES})
file(GLOB SRC_FILES ${PROJECT_SOURCE_DIR}/AnnService/src/Core/*.cpp ${PROJECT_SOURCE_DIR}/AnnService/src/Core/BKT/*.cpp ${PROJECT_SOURCE_DIR}/AnnService/src/Helper/*.cpp)

include_directories(${PROJECT_SOURCE_DIR}/AnnService)
message(STATUS "Header files: ${HDR_FILES}")
message(STATUS "Source files: ${SRC_FILES}")

find_package(OpenMP)
if (OpenMP_FOUND)
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
Expand All @@ -29,29 +20,14 @@ else()
message (FATAL_ERROR "Could not find Boost 1.67!")
endif()

if (CMAKE_BUILD_TYPE STREQUAL "Release")
set (LIBRARY_OUTPUT_PATH "${PROJECT_SOURCE_DIR}/release/")
set (EXECUTABLE_OUTPUT_PATH "${PROJECT_SOURCE_DIR}/release/")
else ()
set (LIBRARY_OUTPUT_PATH "${PROJECT_SOURCE_DIR}/debug/")
set (EXECUTABLE_OUTPUT_PATH "${PROJECT_SOURCE_DIR}/debug/")
endif ()
file(GLOB HDR_FILES ${PROJECT_SOURCE_DIR}/AnnService/inc/Core/*.h ${PROJECT_SOURCE_DIR}/AnnService/inc/Core/BKT/*.h ${PROJECT_SOURCE_DIR}/AnnService/inc/Helper/*.h)
file(GLOB SRC_FILES ${PROJECT_SOURCE_DIR}/AnnService/src/Core/*.cpp ${PROJECT_SOURCE_DIR}/AnnService/src/Core/BKT/*.cpp ${PROJECT_SOURCE_DIR}/AnnService/src/Helper/*.cpp)

string(LENGTH ${PROJECT_SOURCE_DIR} PREFIX_LEN)
MATH(EXPR PREFIX_LEN "${PREFIX_LEN}+1")
foreach(F ${PROJ_HDR_FILES})
GET_FILENAME_COMPONENT(FP ${F} PATH)
string(SUBSTRING ${FP} ${PREFIX_LEN} -1 FS)
install(FILES "${F}" DESTINATION ${FS})
endforeach(F)
include_directories(${PROJECT_SOURCE_DIR}/AnnService)

add_library (SPTAGLib SHARED ${SRC_FILES} ${HDR_FILES})

install(TARGETS SPTAGLib
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
COMPONENT library
)
add_library (SPTAGLibStatic STATIC ${SRC_FILES} ${HDR_FILES})
set_target_properties(SPTAGLibStatic PROPERTIES OUTPUT_NAME SPTAGLib)

file(GLOB SERVER_HDR_FILES ${HDR_FILES} ${PROJECT_SOURCE_DIR}/AnnService/inc/Server/*.h ${PROJECT_SOURCE_DIR}/AnnService/inc/Socket/*.h)
file(GLOB SERVER_FILES ${SRC_FILES} ${PROJECT_SOURCE_DIR}/AnnService/src/Server/*.cpp ${PROJECT_SOURCE_DIR}/AnnService/src/Socket/*.cpp)
Expand All @@ -72,3 +48,8 @@ file(GLOB BUILDER_HDR_FILES ${HDR_FILES} ${PROJECT_SOURCE_DIR}/AnnService/inc/In
file(GLOB BUILDER_FILES ${SRC_FILES} ${PROJECT_SOURCE_DIR}/AnnService/src/IndexBuilder/*.cpp ${PROJECT_SOURCE_DIR}/AnnService/src/IndexBuilder/VectorSetReaders/*.cpp)
add_executable (indexbuilder ${BUILDER_FILES} ${BUILDER_HDR_FILES})
target_link_libraries(indexbuilder ${Boost_LIBRARIES})

install(TARGETS SPTAGLib SPTAGLibStatic server client aggregator indexbuilder
RUNTIME DESTINATION bin
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib)
52 changes: 24 additions & 28 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ cmake_minimum_required (VERSION 2.8)
project (SPTAGLib)

function(CXX_COMPILER_DUMPVERSION _OUTPUT_VERSION)

exec_program(${CMAKE_CXX_COMPILER}
ARGS ${CMAKE_CXX_COMPILER_ARG1} -dumpversion
OUTPUT_VARIABLE COMPILER_VERSION
Expand All @@ -23,42 +22,39 @@ if(${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU")
endif()
set (CMAKE_CXX_FLAGS_RELEASE "-Wall -Wunreachable-code -Wno-reorder -Wno-sign-compare -Wno-unknown-pragmas -Wcast-align -lm -lrt -DNDEBUG -std=c++11 -fopenmp -march=native")
set (CMAKE_CXX_FLAGS_DEBUG "-Wall -Wunreachable-code -Wno-reorder -Wno-sign-compare -Wno-unknown-pragmas -Wcast-align -ggdb -lm -lrt -DNDEBUG -std=c++11 -fopenmp -march=native")

elseif(${CMAKE_CXX_COMPILER_ID} STREQUAL "Intel")
if (CXX_COMPILER_VERSION VERSION_LESS 14.0.1)
message(FATAL_ERROR "Intel version must be at least 14.0.1!")
endif()
set (CMAKE_CXX_FLAGS_RELEASE "-Wall -Wunreachable-code -lrt -DNDEBUG -std=c++11 -fopenmp -march=native")
set (CMAKE_CXX_FLAGS_DEBUG "-Wall -Wunreachable-code -ggdb -lrt -DNDEBUG -std=c++11 -fopenmp -march=native")
elseif(${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang")
if (CXX_COMPILER_VERSION VERSION_LESS 4.2.1)
message(FATAL_ERROR "Clang version must be at least 3.4 (GCC >= 4.2.1 equivalent)!")
endif()
if (CMAKE_SYSTEM_NAME MATCHES Darwin)
# MACOSX
set (CMAKE_CXX_FLAGS_RELEASE "-Wall -Wunreachable-code -Wcast-align -DNDEBUG -std=c++11 -fopenmp -march=native")
set (CMAKE_CXX_FLAGS_DEBUG "-Wall -Wunreachable-code -Wcast-align -ggdb -DNDEBUG -std=c++11 -fopenmp -march=native")
else()
set (CMAKE_CXX_FLAGS_RELEASE "-Wall -Wunreachable-code -Wcast-align -DNDEBUG -std=c++11 -fopenmp -march=native")
set (CMAKE_CXX_FLAGS_DEBUG "-Wall -Wunreachable-code -Wcast-align -ggdb -DNDEBUG -std=c++11 -fopenmp -march=native")
endif()
elseif(WIN32)
if(NOT MSVC14)
message(FATAL_ERROR "On Windows, only MSVC version 14 are supported!")
endif()
else ()
message(FATAL_ERROR "Unrecognized compiler (use GCC, Clang, Intel compiler, or MSVC)!")
message(FATAL_ERROR "Unrecognized compiler (use GCC or MSVC)!")
endif()

if (NOT CMAKE_BUILD_TYPE)
set (CMAKE_BUILD_TYPE Release CACHE STRING "Build types: Release Debug" FORCE)
endif()
message (STATUS "Build type: ${CMAKE_BUILD_TYPE}")

if (${CMAKE_SIZEOF_VOID_P} EQUAL "8")
set (PROJECTNAME_ARCHITECTURE "x64")
else ()
set (PROJECTNAME_ARCHITECTURE "x86")
endif ()
message (STATUS "Platform type: ${PROJECTNAME_ARCHITECTURE}")

if (WIN32)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR})
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR})
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_SOURCE_DIR})
set(Boost_USE_STATIC_LIBS ON)

set(CMAKE_CONFIGURATION_TYPES ${CMAKE_BUILD_TYPE})
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})

set (LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR})
set (EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/${CMAKE_CFG_INTDIR})
else()
if (NOT CMAKE_BUILD_TYPE)
set (CMAKE_BUILD_TYPE Release CACHE STRING "Build types: Release Debug" FORCE)
endif (NOT CMAKE_BUILD_TYPE)
message (STATUS "Build type: ${CMAKE_BUILD_TYPE}")
set (LIBRARY_OUTPUT_PATH "${PROJECT_SOURCE_DIR}/${CMAKE_BUILD_TYPE}/")
set (EXECUTABLE_OUTPUT_PATH "${PROJECT_SOURCE_DIR}/${CMAKE_BUILD_TYPE}/")
endif()

set (CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR})
Expand Down
70 changes: 30 additions & 40 deletions PythonWrapper/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,15 +1,20 @@
if (WIN32)
set(PYTHON_INCLUDE_PATH C:\Python27\include)
set(PY_SUFFIX .pyd)
find_package(Python2 COMPONENTS Development)
if (Python2_FOUND)
if (WIN32)
set(PY_SUFFIX .pyd)
else()
set(PY_SUFFIX .so)
endif()
include_directories (${Python2_INCLUDE_DIRS})
link_directories (${Python2_LIBRARY_DIRS})
message (STATUS "Found Python.")
message (STATUS "Include Path: ${Python2_INCLUDE_DIRS}")
message (STATUS "Library Path: ${Python2_LIBRARIES}")
message (STATUS "Suffix: ${PY_SUFFIX}")
else()
set(PYTHON_INCLUDE_PATH /usr/include/python2.7)
set(PY_SUFFIX .so)
message (FATAL_ERROR "Could not find Python 2.7!")
endif()

include_directories(${PYTHON_INCLUDE_PATH} ${PROJECT_SOURCE_DIR}/AnnService ${PROJECT_SOURCE_DIR}/PythonWrapper)
message(STATUS "Header files: ${HDR_FILES}")
message(STATUS "Source files: ${SRC_FILES}")

find_package(OpenMP)
if (OpenMP_FOUND)
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
Expand All @@ -23,53 +28,38 @@ endif()
find_package(Boost 1.67 COMPONENTS system thread serialization wserialization regex)
if (Boost_FOUND)
include_directories (${Boost_INCLUDE_DIR})
link_directories (${Boost_LIBRARY_DIR} "/usr/lib")
link_directories (${Boost_LIBRARY_DIR})
message (STATUS "Found Boost.")
message (STATUS "Include Path: ${Boost_INCLUDE_DIRS}")
message (STATUS "Library Path: ${Boost_LIBRARY_DIRS}")
message (STATUS "Library: ${Boost_LIBRARIES}")
else()
message (FATAL_ERROR "Could not find Boost 1.67!")
endif()

if (CMAKE_BUILD_TYPE STREQUAL "Release")
set (LIBRARY_OUTPUT_PATH "${PROJECT_SOURCE_DIR}/release/")
set (EXECUTABLE_OUTPUT_PATH "${PROJECT_SOURCE_DIR}/release/")
else ()
set (LIBRARY_OUTPUT_PATH "${PROJECT_SOURCE_DIR}/debug/")
set (EXECUTABLE_OUTPUT_PATH "${PROJECT_SOURCE_DIR}/debug/")
endif ()


execute_process(COMMAND swig -l${PROJECT_SOURCE_DIR}/PythonWrapper/inc/PyByteArray.i -python -c++ ${PROJECT_SOURCE_DIR}/PythonWrapper/inc/CoreInterface.h)
execute_process(COMMAND mv ${PROJECT_SOURCE_DIR}/PythonWrapper/inc/SPTAG.py ${PROJECT_SOURCE_DIR}/PythonWrapper/inc/CoreInterface_wrap.cxx ${LIBRARY_OUTPUT_PATH})

execute_process(COMMAND swig -l${PROJECT_SOURCE_DIR}/PythonWrapper/inc/PyByteArray.i -python -c++ ${PROJECT_SOURCE_DIR}/PythonWrapper/inc/ClientInterface.h)
execute_process(COMMAND mv ${PROJECT_SOURCE_DIR}/PythonWrapper/inc/SPTAGClient.py ${PROJECT_SOURCE_DIR}/PythonWrapper/inc/ClientInterface_wrap.cxx ${LIBRARY_OUTPUT_PATH})

include_directories(${PYTHON_INCLUDE_PATH} ${PROJECT_SOURCE_DIR}/AnnService ${PROJECT_SOURCE_DIR}/PythonWrapper)
set(CMAKE_SHARED_LIBRARY_PREFIX "")

file(GLOB CORE_HDR_FILES ${PROJECT_SOURCE_DIR}/PythonWrapper/inc/CoreInterface.h ${OTH_HDR_FILES})
file(GLOB CORE_SRC_FILES ${PROJECT_SOURCE_DIR}/PythonWrapper/src/CoreInterface.cpp ${LIBRARY_OUTPUT_PATH}/CoreInterface_wrap.cxx)
file(GLOB CORE_SRC_FILES ${PROJECT_SOURCE_DIR}/PythonWrapper/src/CoreInterface.cpp ${PROJECT_SOURCE_DIR}/PythonWrapper/inc/CoreInterface_wrap.cxx)
add_library (_SPTAG SHARED ${CORE_SRC_FILES} ${CORE_HDR_FILES})
target_link_libraries(_SPTAG SPTAGLib python2.7)
set_target_properties(_SPTAG PROPERTIES SUFFIX ${PY_SUFFIX})
target_link_libraries(_SPTAG SPTAGLib ${Python2_LIBRARIES})
add_custom_command(TARGET _SPTAG POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/PythonWrapper/inc/SPTAG.py ${EXECUTABLE_OUTPUT_PATH})

file(GLOB CLIENT_HDR_FILES ${PROJECT_SOURCE_DIR}/PythonWrapper/inc/ClientInterface.h ${OTH_HDR_FILES} ${PROJECT_SOURCE_DIR}/AnnService/inc/Socket/*.h ${PROJECT_SOURCE_DIR}/AnnService/inc/Client/*.h)
file(GLOB CLIENT_SRC_FILES ${PROJECT_SOURCE_DIR}/PythonWrapper/src/ClientInterface.cpp ${PROJECT_SOURCE_DIR}/AnnService/src/Socket/*.cpp ${PROJECT_SOURCE_DIR}/AnnService/src/Client/*.cpp ${LIBRARY_OUTPUT_PATH}/ClientInterface_wrap.cxx)
file(GLOB CLIENT_SRC_FILES ${PROJECT_SOURCE_DIR}/PythonWrapper/src/ClientInterface.cpp ${PROJECT_SOURCE_DIR}/AnnService/src/Socket/*.cpp ${PROJECT_SOURCE_DIR}/AnnService/src/Client/*.cpp ${PROJECT_SOURCE_DIR}/PythonWrapper/inc/ClientInterface_wrap.cxx)
add_library (_SPTAGClient SHARED ${CLIENT_SRC_FILES} ${CLIENT_HDR_FILES})
target_link_libraries(_SPTAGClient SPTAGLib python2.7 ${Boost_LIBRARIES})

string(LENGTH ${PROJECT_SOURCE_DIR} PREFIX_LEN)
MATH(EXPR PREFIX_LEN "${PREFIX_LEN}+1")
foreach(F ${PROJ_HDR_FILES})
GET_FILENAME_COMPONENT(FP ${F} PATH)
string(SUBSTRING ${FP} ${PREFIX_LEN} -1 FS)
message(${PREFIX_LEN} ":" ${FS})
install(FILES "${F}" DESTINATION ${FS})
endforeach(F)
set_target_properties(_SPTAGClient PROPERTIES SUFFIX ${PY_SUFFIX})
target_link_libraries(_SPTAGClient SPTAGLib ${Python2_LIBRARIES} ${Boost_LIBRARIES})
add_custom_command(TARGET _SPTAGClient POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${PROJECT_SOURCE_DIR}/PythonWrapper/inc/SPTAGClient.py ${EXECUTABLE_OUTPUT_PATH})

install(TARGETS _SPTAG
install(TARGETS _SPTAG _SPTAGClient
RUNTIME DESTINATION bin
ARCHIVE DESTINATION lib
LIBRARY DESTINATION lib
COMPONENT library
)
LIBRARY DESTINATION lib)

install(FILES ${PROJECT_SOURCE_DIR}/PythonWrapper/src/SPTAG.py DESTINATION lib)
install(FILES ${PROJECT_SOURCE_DIR}/PythonWrapper/src/SPTAG.py ${PROJECT_SOURCE_DIR}/PythonWrapper/inc/SPTAGClient.py DESTINATION bin)

0 comments on commit bee17ac

Please sign in to comment.