get nacos config in win10 cygwin

安装

勾选组件并安装

1
2
3
4
5
6
7
8
make
cmake
gcc-core
gcc-g++
gdb
curl
mingw64
zlib

20240328134338.png


Cygwin安装教程

在Windows命令行中编译运行C/C++程序

源码

下载源码:nacos-sdk-cpp-1.1.0.zip

https://github.com/nacos-group/nacos-sdk-cpp

cmake . 正常运行

make 在构建 tid.h 时报错

1
2
3
#if defined(__CYGWIN__) || defined(MS_WINDOWS)
//TODO:for windows/cygwin
#include <sys/syscall.h>

cygwin能否使用syscall()或gettid()?

尝试在 tid.h 中添加 #include<windows.h> 引入windows上获取线程号的方法
发现很多全局定义冲突,例如 nb30.h中的 #define GROUP_NAME 0x80,和nacos中的GROUP_NAME冲突

Expected unqualified-id before numeric constant for defining a number

意识到是引入的范围太大,导致太多重名。
去除 tid.h 的引入,转而在实现部分 tid.cpp 中引入具体的windows方法

tid.h

1
2
3
4
5
#if defined(__CYGWIN__) || defined(MS_WINDOWS)
//TODO:for windows/cygwin
#include <unistd.h>
#define TID_T unsigned long long
TID_T gettidv1();

tid.cpp

1
2
3
4
5
6
#if defined(__CYGWIN__) || defined(MS_WINDOWS)
//TODO:for windows/cygwin
#include<windows.h>
TID_T gettidv1() {
return GetCurrentThreadId();
}

应该早点看到源码中的注释 //TODO:for windows/cygwin -_-!!!

编译

尝试删除testexamplemake,报错缺少main

c++ - 使用 cygwin 和 cmake 对 `WinMain’ 的 undefined reference
链接库的构建需要test包下的main,运行后获得动态、静态库、测试执行文件

libnacos-cli.dll.a
libnacos-cli-static.a
nacos-cli.out.exe

本地启动nacos服务,nacos-cli.out.exe可正常测试通过

example/getConfig.cpp copy 一份至根目录,修改配置
执行命令编译

1
2
g++ -I/usr/local/include/nacos/ getConfig.cpp libnacos-cli.dll.a -o getConfig.exe
g++ -I/usr/local/include/nacos/ getConfig.cpp libnacos-cli-static.a -o getConfig.exe -lcurl -lz -L.

README 提示给的命令有些不一样,命令的 -l 参数要放最后边

libcurl in Netbeans: ‘undefined reference to…’