1- cmake_minimum_required (VERSION 3.6)
2- set (ProjectName apiDemo)
3- project (${ProjectName} )
4- set (SRC_LIST
5- ${CMAKE_CURRENT_SOURCE_DIR} /src/main.cpp
6- )
1+ cmake_minimum_required (VERSION 3.13)
2+
3+ project (DolphinDBDemo)
4+
5+ set (CMAKE_EXPORT_COMPILE_COMMANDS ON )
6+ set (CMAKE_CXX_EXTENSIONS OFF )
7+
78set (LINK_LIBS)
89if (USE_OPENSSL)
910 add_definitions ("-DUSE_OPENSSL=1" )
10- if (OPENSSL_PATH)
11- set (ENV{OPENSSL_ROOT_DIR} ${OPENSSL_PATH} )
12- endif ()
1311 find_package (OpenSSL REQUIRED)
1412 include_directories (${OPENSSL_INCLUDE_DIR} )
1513 message ("openssl include dir : ${OPENSSL_INCLUDE_DIR} " )
1614 message ("openssl ssl lib dir : ${OPENSSL_SSL_LIBRARY} " )
1715 message ("openssl crypto lib dir : ${OPENSSL_CRYPTO_LIBRARY} " )
1816endif ()
1917if (UNIX )
20- add_compile_options (-std=c++11 -DLINUX -Wall -O0 -g -fPIC -Wl,-rpath,${CMAKE_CURRENT_SOURCE_DIR} :${CMAKE_CURRENT_SOURCE_DIR} /lib)
21- if (ABI EQUAL 0)
22- message ("set _GLIBCXX_USE_CXX11_ABI to 0" )
23- add_definitions ("-D_GLIBCXX_USE_CXX11_ABI=0" )
24- elseif (ABI EQUAL 1)
25- message ("set _GLIBCXX_USE_CXX11_ABI to 1" )
26- add_definitions ("-D_GLIBCXX_USE_CXX11_ABI=1" )
18+ check_include_file("uuid/uuid.h" HAS_UUID)
19+ if (NOT HAS_UUID)
20+ message (FATAL_ERROR "Failed to find uuid." )
2721 endif ()
22+ add_compile_options (-std=c++11 -DLINUX -Wall -fPIC)
2823 list (APPEND LINK_LIBS DolphinDBAPI rt pthread)
2924elseif (WIN32 )
3025 if (MSVC )
31- add_compile_options (-DWINDOWS -DNOMINMAX -D_DEBUG)
32- set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MDd" )
33- set (CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MDd" )
26+ add_compile_options (-DWINDOWS -DNOMINMAX)
3427 list (APPEND LINK_LIBS DolphinDBAPI)
3528 elseif (MINGW)
36- add_compile_options (-std=c++11 -DWINDOWS -Wall -O0 -g -fPIC -Wl,-rpath,${CMAKE_CURRENT_SOURCE_DIR} :${CMAKE_CURRENT_SOURCE_DIR} /lib)
37- if (ABI EQUAL 0)
38- message ("set _GLIBCXX_USE_CXX11_ABI to 0" )
39- add_definitions ("-D_GLIBCXX_USE_CXX11_ABI=0" )
40- elseif (ABI EQUAL 1)
41- message ("set _GLIBCXX_USE_CXX11_ABI to 1" )
42- add_definitions ("-D_GLIBCXX_USE_CXX11_ABI=1" )
43- endif ()
29+ add_compile_options (-std=c++11 -DWINDOWS -Wall -fPIC)
4430 list (APPEND LINK_LIBS DolphinDBAPI pthread)
4531 endif ()
4632endif ()
47- include_directories (
48- ${CMAKE_CURRENT_SOURCE_DIR} /../include
49- )
50- link_directories (
51- ${CMAKE_CURRENT_SOURCE_DIR} /lib/
52- )
53- add_executable (${ProjectName} ${SRC_LIST} )
54- target_link_libraries (${ProjectName}
55- ${LINK_LIBS}
56- )
57- set (EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_SOURCE_DIR} /bin/)
33+ include_directories (${CMAKE_CURRENT_SOURCE_DIR} /../include )
34+ link_directories (${CMAKE_CURRENT_SOURCE_DIR} /lib/)
35+ add_executable (${CMAKE_PROJECT_NAME} ${PROJECT_SOURCE_DIR} /src/main.cpp)
36+ target_compile_features (${CMAKE_PROJECT_NAME} PRIVATE cxx_std_11)
37+ target_link_libraries (${CMAKE_PROJECT_NAME} ${LINK_LIBS} )
38+ set (EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_SOURCE_DIR} /bin/)
39+
40+ if (CMAKE_CXX_COMPILER_ID MATCHES "MSVC" )
41+ # C4251: Class member of an exported class is not marked dllexport.
42+ # This is triggered by std::string but we cannot modify STL.
43+ # C4100: Parameter is unused. We should fix this later.
44+ # C4996: The code uses a deprecated API. We should fix this later.
45+ target_compile_options (${CMAKE_PROJECT_NAME} PRIVATE /W3 /MP /wd4251 /wd4100 /wd4996)
46+ # Unicode support of fmt (used in spdlog) requires /utf-8 of MSVC.
47+ target_compile_definitions (${CMAKE_PROJECT_NAME} PRIVATE FMT_UNICODE=0)
48+ else ()
49+ # overloaded-virtual: Derived class hides base class virtual functions
50+ # This is triggered by derived classes of Constant and we will fix this later
51+ target_compile_options (${CMAKE_PROJECT_NAME} PRIVATE -Wall -Wno-overloaded-virtual)
52+ # Enable Wextra and Wconversion when possible
53+ # Try clang hwasan when possible: -fsanitize=hwaddress -Wl,--no-relax
54+ set (CMAKE_CXX_FLAGS_DEV "${CMAKE_CXX_FLAGS_DEBUG} -fsanitize=address -Werror -Wpedantic" )
55+ endif ()
0 commit comments