在win10上用minGW编译dolphindb c++插件,CMakeList.txt如下
cmake_minimum_required(VERSION 3.0)
project(PluginMQTTClient)
set(CMAKE_CXX_STANDARD 11)
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/../include")
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/lib/")
aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR}/src/ PluginSrc)
aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR}/lib/ MQTTSrc)
set(CMAKE_VERBOSE_MAKEFILE ON)
if (WIN32 OR MINGW)
set (platform_macro "-DWINDOWS")
elseif (UNIX)
set (platform_macro "-DLINUX")
add_definitions(-D_GLIBCXX_USE_CXX11_ABI=0)
endif ()
message("platform: ${platform_macro}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall ${platform_macro} ")
#add_compile_options( "-std=c++0x" "-fPIC" )
#add_compile_options("-std=c++11" "-fPIC" ${platform_macro} "-Wall")
add_library(${PROJECT_NAME} SHARED ${PluginSrc} ${MQTTSrc} ./src/templates/posix_sockets.c)
link_directories("${CMAKE_BINARY_DIR}")
link_directories("D:/DolphinDB/DolphinDB_Win64_V1.00.23/server")
set(CMAKE_EXE_LINKER_FLAGS "-Wl,-rpath,.")
if (WIN32)
target_link_libraries(${PROJECT_NAME} pthread WS2_32 DolphinDB)
elseif (UNIX)
target_link_libraries(${PROJECT_NAME} pthread)
endif ()
编译后出错:
====================[ Build | all | Debug ]=====================================
"C:\Program Files\JetBrains\CLion 2019.1.4\bin\cmake\win\bin\cmake.exe" --build D:\New2xdb\release100\DolphinDBPlugin\mqtt\cmake-build-debug --target all -- -j 6
"C:\Program Files\JetBrains\CLion 2019.1.4\bin\cmake\win\bin\cmake.exe" -SD:\New2xdb\release100\DolphinDBPlugin\mqtt -BD:\New2xdb\release100\DolphinDBPlugin\mqtt\cmake-build-debug --check-build-system CMakeFiles\Makefile.cmake 0
"C:\Program Files\JetBrains\CLion 2019.1.4\bin\cmake\win\bin\cmake.exe" -E cmake_progress_start D:\New2xdb\release100\DolphinDBPlugin\mqtt\cmake-build-debug\CMakeFiles D:\New2xdb\release100\DolphinDBPlugin\mqtt\cmake-build-debug\CMakeFiles\progress.marks
C:/MinGW/MinGW/mingw64/bin/mingw32-make.exe -f CMakeFiles\Makefile2 all
mingw32-make.exe[1]: Entering directory 'D:/New2xdb/release100/DolphinDBPlugin/mqtt/cmake-build-debug'
C:/MinGW/MinGW/mingw64/bin/mingw32-make.exe -f CMakeFiles\PluginMQTTClient.dir\build.make CMakeFiles/PluginMQTTClient.dir/depend
mingw32-make.exe[2]: Entering directory 'D:/New2xdb/release100/DolphinDBPlugin/mqtt/cmake-build-debug'
"C:\Program Files\JetBrains\CLion 2019.1.4\bin\cmake\win\bin\cmake.exe" -E cmake_depends "MinGW Makefiles" D:\New2xdb\release100\DolphinDBPlugin\mqtt D:\New2xdb\release100\DolphinDBPlugin\mqtt D:\New2xdb\release100\DolphinDBPlugin\mqtt\cmake-build-debug D:\New2xdb\release100\DolphinDBPlugin\mqtt\cmake-build-debug D:\New2xdb\release100\DolphinDBPlugin\mqtt\cmake-build-debug\CMakeFiles\PluginMQTTClient.dir\DependInfo.cmake --color=
Scanning dependencies of target PluginMQTTClient
mingw32-make.exe[2]: Leaving directory 'D:/New2xdb/release100/DolphinDBPlugin/mqtt/cmake-build-debug'
C:/MinGW/MinGW/mingw64/bin/mingw32-make.exe -f CMakeFiles\PluginMQTTClient.dir\build.make CMakeFiles/PluginMQTTClient.dir/build
mingw32-make.exe[2]: Entering directory 'D:/New2xdb/release100/DolphinDBPlugin/mqtt/cmake-build-debug'
[ 14%] Building CXX object CMakeFiles/PluginMQTTClient.dir/src/parser.cpp.obj
C:\MinGW\MinGW\mingw64\bin\g++.exe -DPluginMQTTClient_EXPORTS @CMakeFiles/PluginMQTTClient.dir/includes_CXX.rsp -Wall -DWINDOWS -g -std=gnu++11 -o CMakeFiles\PluginMQTTClient.dir\src\parser.cpp.obj -c D:\New2xdb\release100\DolphinDBPlugin\mqtt\src\parser.cpp
[ 28%] Building CXX object CMakeFiles/PluginMQTTClient.dir/src/pub_client.cpp.obj
C:\MinGW\MinGW\mingw64\bin\g++.exe -DPluginMQTTClient_EXPORTS @CMakeFiles/PluginMQTTClient.dir/includes_CXX.rsp -Wall -DWINDOWS -g -std=gnu++11 -o CMakeFiles\PluginMQTTClient.dir\src\pub_client.cpp.obj -c D:\New2xdb\release100\DolphinDBPlugin\mqtt\src\pub_client.cpp
[ 42%] Building CXX object CMakeFiles/PluginMQTTClient.dir/src/sub_client.cpp.obj
C:\MinGW\MinGW\mingw64\bin\g++.exe -DPluginMQTTClient_EXPORTS @CMakeFiles/PluginMQTTClient.dir/includes_CXX.rsp -Wall -DWINDOWS -g -std=gnu++11 -o CMakeFiles\PluginMQTTClient.dir\src\sub_client.cpp.obj -c D:\New2xdb\release100\DolphinDBPlugin\mqtt\src\sub_client.cpp
[ 57%] Building C object CMakeFiles/PluginMQTTClient.dir/lib/mqtt.c.obj
C:\MinGW\MinGW\mingw64\bin\gcc.exe -DPluginMQTTClient_EXPORTS @CMakeFiles/PluginMQTTClient.dir/includes_C.rsp -g -o CMakeFiles\PluginMQTTClient.dir\lib\mqtt.c.obj -c D:\New2xdb\release100\DolphinDBPlugin\mqtt\lib\mqtt.c
[ 71%] Building C object CMakeFiles/PluginMQTTClient.dir/lib/mqtt_pal.c.obj
C:\MinGW\MinGW\mingw64\bin\gcc.exe -DPluginMQTTClient_EXPORTS @CMakeFiles/PluginMQTTClient.dir/includes_C.rsp -g -o CMakeFiles\PluginMQTTClient.dir\lib\mqtt_pal.c.obj -c D:\New2xdb\release100\DolphinDBPlugin\mqtt\lib\mqtt_pal.c
[ 85%] Building C object CMakeFiles/PluginMQTTClient.dir/src/templates/posix_sockets.c.obj
C:\MinGW\MinGW\mingw64\bin\gcc.exe -DPluginMQTTClient_EXPORTS @CMakeFiles/PluginMQTTClient.dir/includes_C.rsp -g -o CMakeFiles\PluginMQTTClient.dir\src\templates\posix_sockets.c.obj -c D:\New2xdb\release100\DolphinDBPlugin\mqtt\src\templates\posix_sockets.c
[100%] Linking CXX shared library libPluginMQTTClient.dll
"C:\Program Files\JetBrains\CLion 2019.1.4\bin\cmake\win\bin\cmake.exe" -E cmake_link_script CMakeFiles\PluginMQTTClient.dir\link.txt --verbose=1
"C:\Program Files\JetBrains\CLion 2019.1.4\bin\cmake\win\bin\cmake.exe" -E remove -f CMakeFiles\PluginMQTTClient.dir/objects.a
C:\MinGW\MinGW\mingw64\bin\ar.exe cr CMakeFiles\PluginMQTTClient.dir/objects.a @CMakeFiles\PluginMQTTClient.dir\objects1.rsp
C:\MinGW\MinGW\mingw64\bin\g++.exe -Wall -DWINDOWS -g -shared -o libPluginMQTTClient.dll -Wl,--out-implib,libPluginMQTTClient.dll.a -Wl,--major-image-version,0,--minor-image-version,0 -Wl,--whole-archive CMakeFiles\PluginMQTTClient.dir/objects.a -Wl,--no-whole-archive @CMakeFiles\PluginMQTTClient.dir\linklibs.rsp
C:/MinGW/MinGW/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/7.1.0/../../../../x86_64-w64-mingw32/bin/ld.exe: **cannot find -lDolphinDB
collect2.exe: error: ld returned 1 exit status**
mingw32-make.exe[2]: Leaving directory 'D:/New2xdb/release100/DolphinDBPlugin/mqtt/cmake-build-debug'
mingw32-make.exe[2]: *** [CMakeFiles\PluginMQTTClient.dir\build.make:169: libPluginMQTTClient.dll] Error 1
mingw32-make.exe[1]: *** [CMakeFiles\Makefile2:75: CMakeFiles/PluginMQTTClient.dir/all] Error 2
mingw32-make.exe[1]: Leaving directory 'D:/New2xdb/release100/DolphinDBPlugin/mqtt/cmake-build-debug'
mingw32-make.exe: *** [Makefile:86: all] Error 2