Skip to content

Commit a19c44f

Browse files
committed
[BUG] Windows OK
1 parent ca8c438 commit a19c44f

File tree

7 files changed

+56
-39
lines changed

7 files changed

+56
-39
lines changed

.gitignore

+3-4
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,7 @@ data_*/
5252
.DS_Store
5353

5454
# Specific
55-
lib/libcrypto64MD.lib
56-
lib/libssl64MD.lib
57-
demo/addons/GDPaho/windows/libgdpaho.dll
58-
demo/addons/GDPaho/windows/libgdpaho.lib
5955
/build
56+
/demo/.godot/
57+
/demo/addons/GDPaho/bin/
58+
*.import

CMakeLists.txt

+35-6
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,42 @@
11
cmake_minimum_required(VERSION 3.6)
22
project(gdpaho)
33

4+
option(BUILD_FOR_EDITOR "If true, create and install libs as release ready to use in the demo folder" FALSE)
5+
46
set(GODOT_GDEXTENSION_DIR godot-cpp/gdextension/ CACHE STRING "Path to GDExtension interface header directory")
57
set(CPP_BINDINGS_PATH godot-cpp CACHE STRING "Path to C++ bindings")
68

9+
if(DEFINED BUILD_FOR_EDITOR)
10+
if(${BUILD_FOR_EDITOR})
11+
set(CMAKE_BUILD_TYPE Release)
12+
message("Build for editor mode ignore CMAKE_BUILD_TYPE, " CMAKE_BUILD_TYPE="${CMAKE_BUILD_TYPE}")
13+
execute_process(
14+
COMMAND cmake -DCMAKE_BUILD_TYPE=Release godot-cpp -B godot-cpp
15+
WORKING_DIRECTORY "."
16+
COMMAND_ECHO STDOUT
17+
)
18+
execute_process(
19+
COMMAND cmake --build godot-cpp
20+
WORKING_DIRECTORY "."
21+
COMMAND_ECHO STDOUT
22+
)
23+
endif()
24+
endif()
25+
726
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
827
set(TARGET_PATH x11)
28+
set(LIB_EXT ".so")
929
elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows")
1030
set(TARGET_PATH win64)
11-
set(PAHO_MQTT_C_LIBRARIES "C:/Program Files (x86)/Eclipse Paho C/lib/" CACHE PATH "Paho C libraries directory override" FORCE)
31+
set(PAHO_MQTT_C_LIBRARIES "C:/Program Files (x86)/Eclipse Paho C/lib/paho-mqtt3as-static.lib" CACHE PATH "Paho C libraries directory override" FORCE)
1232
set(PAHO_MQTT_C_INCLUDE_DIRS "C:/Program Files (x86)/Eclipse Paho C/include/" CACHE PATH "Paho C includes directory override" FORCE)
1333
set(PahoMqttCpp_DIR "C:/Program Files (x86)/paho-mqtt-cpp/lib/cmake/PahoMqttCpp" CACHE PATH "Paho CPP directory override" FORCE)
34+
set(LIB_EXT ".dll")
1435

1536
elseif(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
1637
set(TARGET_PATH macos)
38+
set(LIB_EXT ".dylib")
39+
1740
else()
1841
message(FATAL_ERROR "Not implemented support for ${CMAKE_SYSTEM_NAME}")
1942
endif()
@@ -157,7 +180,7 @@ find_package(PahoMqttCpp REQUIRED)
157180
if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
158181
target_link_directories(${PROJECT_NAME}
159182
PRIVATE
160-
${CPP_BINDINGS_PATH}/bin/${BUILD_TYPE}
183+
${CPP_BINDINGS_PATH}/bin/Debug # "Debug" Always seems to be a bug on Windows
161184
)
162185
target_link_libraries(${PROJECT_NAME}
163186
godot-cpp.${SYSTEM_NAME}.${BUILD_TYPE}$<$<NOT:$<PLATFORM_ID:Android>>:.${BITS}>
@@ -175,12 +198,18 @@ else()
175198
PahoMqttCpp::paho-mqttpp3-static
176199
)
177200
endif()
178-
179-
# Add the compile flags
180-
set_property(TARGET ${PROJECT_NAME} APPEND_STRING PROPERTY COMPILE_FLAGS ${GODOT_COMPILE_FLAGS})
181-
set_property(TARGET ${PROJECT_NAME} APPEND_STRING PROPERTY LINK_FLAGS ${GODOT_LINKER_FLAGS})
201+
202+
# Add the compile flags
203+
set_property(TARGET ${PROJECT_NAME} APPEND_STRING PROPERTY COMPILE_FLAGS ${GODOT_COMPILE_FLAGS})
204+
set_property(TARGET ${PROJECT_NAME} APPEND_STRING PROPERTY LINK_FLAGS ${GODOT_LINKER_FLAGS})
182205
if(CMAKE_BUILD_TYPE MATCHES Debug)
183206
set_property(TARGET ${PROJECT_NAME} PROPERTY OUTPUT_NAME "gdpaho.debug")
184207
else()
185208
set_property(TARGET ${PROJECT_NAME} PROPERTY OUTPUT_NAME "gdpaho.release")
186209
endif()
210+
211+
if(${BUILD_FOR_EDITOR})
212+
add_custom_command(TARGET ${PROJECT_NAME} POST_BUILD
213+
COMMAND ${CMAKE_COMMAND} -E copy ${BUILD_PATH}/${PROJECT_NAME}.release${LIB_EXT} ${BUILD_PATH}/gdpaho.debug${LIB_EXT}
214+
)
215+
endif()

README.md

+10-26
Original file line numberDiff line numberDiff line change
@@ -33,22 +33,10 @@ Dependencies:
3333

3434
The editor uses the debug version, but if you want to export your project as a release, you have to compile everything as a release as well:
3535
- Run `git clone --recurse-submodules https://github.com/GDWired/GDPaho.git -b godot-4`
36-
37-
One command compile debug
38-
```cmake
39-
cmake -DCMAKE_BUILD_TYPE=Debug godot-cpp -B godot-cpp
40-
cmake --build godot-cpp
41-
mkdir build
42-
cmake -DCMAKE_BUILD_TYPE=Debug . -B build
43-
cmake --build build
44-
```
4536

46-
One command compile release
37+
Compile everything in release and copy libs to the demo folder ready to use by Godot4.
4738
```cmake
48-
cmake -DCMAKE_BUILD_TYPE=Release godot-cpp -B godot-cpp
49-
cmake --build godot-cpp
50-
mkdir build
51-
cmake -DCMAKE_BUILD_TYPE=Release . -B build
39+
cmake -DBUILD_FOR_EDITOR=True . -B build
5240
cmake --build build
5341
```
5442

@@ -60,24 +48,20 @@ Should be done in root
6048
```console
6149
git clone https://github.com/eclipse/paho.mqtt.c.git
6250
cd paho.mqtt.c
63-
mkdir build
64-
cd build
65-
[macOS] cmake .. -DPAHO_BUILD_SHARED=FALSE -DPAHO_BUILD_STATIC=TRUE -DPAHO_HIGH_PERFORMANCE=TRUE -DPAHO_WITH_SSL=TRUE -DPAHO_ENABLE_TESTING=FALSE -DOPENSSL_ROOT_DIR=$(brew --prefix openssl) -DCMAKE_BUILD_TYPE=Release -DCMAKE_POSITION_INDEPENDENT_CODE=ON
66-
[Windows] cmake .. -DPAHO_BUILD_SHARED=FALSE -DPAHO_BUILD_STATIC=TRUE -DPAHO_HIGH_PERFORMANCE=TRUE -DPAHO_WITH_SSL=TRUE -DPAHO_ENABLE_TESTING=FALSE -DOPENSSL_ROOT_DIR="C:\Program Files\OpenSSL-Win64" -DCMAKE_BUILD_TYPE=Release -DCMAKE_POSITION_INDEPENDENT_CODE=ON
67-
[Linux] cmake .. -DPAHO_BUILD_SHARED=FALSE -DPAHO_BUILD_STATIC=TRUE -DPAHO_HIGH_PERFORMANCE=TRUE -DPAHO_WITH_SSL=TRUE -DPAHO_ENABLE_TESTING=FALSE -DCMAKE_BUILD_TYPE=Release -DCMAKE_POSITION_INDEPENDENT_CODE=ON
68-
cmake --build . --target install --config "MinSizeRel"
51+
[macOS] cmake . -DPAHO_BUILD_SHARED=FALSE -DPAHO_BUILD_STATIC=TRUE -DPAHO_HIGH_PERFORMANCE=TRUE -DPAHO_WITH_SSL=TRUE -DPAHO_ENABLE_TESTING=FALSE -DOPENSSL_ROOT_DIR=$(brew --prefix openssl) -DCMAKE_BUILD_TYPE=Release -DCMAKE_POSITION_INDEPENDENT_CODE=ON -B build
52+
[Windows] cmake . -DPAHO_BUILD_SHARED=FALSE -DPAHO_BUILD_STATIC=TRUE -DPAHO_HIGH_PERFORMANCE=TRUE -DPAHO_WITH_SSL=TRUE -DPAHO_ENABLE_TESTING=FALSE -DOPENSSL_ROOT_DIR="C:\Program Files\OpenSSL-Win64" -DCMAKE_BUILD_TYPE=Release -DCMAKE_POSITION_INDEPENDENT_CODE=ON -B build
53+
[Linux] cmake . -DPAHO_BUILD_SHARED=FALSE -DPAHO_BUILD_STATIC=TRUE -DPAHO_HIGH_PERFORMANCE=TRUE -DPAHO_WITH_SSL=TRUE -DPAHO_ENABLE_TESTING=FALSE -DCMAKE_BUILD_TYPE=Release -DCMAKE_POSITION_INDEPENDENT_CODE=ON -B build
54+
cmake --build build --target install --config "MinSizeRel"
6955
```
7056

7157
**paho.cpp**
7258
```console
7359
git clone https://github.com/eclipse/paho.mqtt.cpp.git
7460
cd paho.mqtt.cpp
75-
mkdir build
76-
cd build
77-
[macOS] cmake .. -DPAHO_BUILD_SHARED=FALSE -DPAHO_BUILD_STATIC=TRUE -DPAHO_WITH_SSL=TRUE -DOPENSSL_ROOT_DIR=$(brew --prefix openssl) -DCMAKE_BUILD_TYPE=Release -DCMAKE_POSITION_INDEPENDENT_CODE=ON
78-
[Windows] cmake .. -DPAHO_BUILD_SHARED=FALSE -DPAHO_BUILD_STATIC=TRUE -DPAHO_WITH_SSL=TRUE -DOPENSSL_ROOT_DIR="C:\Program Files\OpenSSL-Win64" -DPAHO_MQTT_C_INCLUDE_DIRS="C:\Program Files (x86)\Eclipse Paho C\include" -DPAHO_MQTT_C_LIBRARIES="C:\Program Files (x86)\Eclipse Paho C\lib" -DCMAKE_BUILD_TYPE=Release -DCMAKE_POSITION_INDEPENDENT_CODE=ON
79-
[Linux] cmake .. -DPAHO_BUILD_SHARED=FALSE -DPAHO_BUILD_STATIC=TRUE -DPAHO_WITH_SSL=TRUE -DCMAKE_BUILD_TYPE=Release -DCMAKE_POSITION_INDEPENDENT_CODE=ON
80-
cmake --build . --target install --config "MinSizeRel"
61+
[macOS] cmake . -DPAHO_BUILD_SHARED=FALSE -DPAHO_BUILD_STATIC=TRUE -DPAHO_WITH_SSL=TRUE -DOPENSSL_ROOT_DIR=$(brew --prefix openssl) -DCMAKE_BUILD_TYPE=Release -DCMAKE_POSITION_INDEPENDENT_CODE=ON -B build
62+
[Windows] cmake . -DPAHO_BUILD_SHARED=FALSE -DPAHO_BUILD_STATIC=TRUE -DPAHO_WITH_SSL=TRUE -DOPENSSL_ROOT_DIR="C:\Program Files\OpenSSL-Win64" -DPAHO_MQTT_C_INCLUDE_DIRS="C:\Program Files (x86)\Eclipse Paho C\include" -DPAHO_MQTT_C_LIBRARIES="C:\Program Files (x86)\Eclipse Paho C\lib" -DCMAKE_BUILD_TYPE=Release -DCMAKE_POSITION_INDEPENDENT_CODE=ON -B build
63+
[Linux] cmake . -DPAHO_BUILD_SHARED=FALSE -DPAHO_BUILD_STATIC=TRUE -DPAHO_WITH_SSL=TRUE -DCMAKE_BUILD_TYPE=Release -DCMAKE_POSITION_INDEPENDENT_CODE=ON -B build
64+
cmake --build build --target install --config "MinSizeRel"
8165
```
8266

8367
## Demo

demo/addons/GDPaho/GDPaho.gdextension

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ compatibility_minimum = "4.1"
77

88
macos.debug = "res://addons/GDPaho/bin/macos/libgdpaho.debug.dylib"
99
macos.release = "res://addons/GDPaho/bin/macos/libgdpaho.release.dylib"
10-
windows.debug.x86_64 = "res://addons/GDPaho/bin/windows/libgdpaho.debug.dll"
11-
windows.release.x86_64 = "res://addons/GDPaho/bin/windows/libgdpaho.release.dll"
10+
windows.debug.x86_64 = "res://addons/GDPaho/bin/win64/gdpaho.debug.dll"
11+
windows.release.x86_64 = "res://addons/GDPaho/bin/win64/gdpaho.release.dll"
1212
linux.debug.x86_64 = "res://addons/GDPaho/bin/x11/libgdpaho.debug.so"
1313
linux.release.x86_64 = "res://addons/GDPaho/bin/x11/libgdpaho.release.so"
1414

demo/project.godot

+4
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,10 @@ GDPahoUtils="*res://addons/GDPaho/GDPahoUtils.gd"
2323

2424
window/dpi/allow_hidpi=false
2525

26+
[dotnet]
27+
28+
project/assembly_name="GDPaho Demo"
29+
2630
[editor_plugins]
2731

2832
enabled=PackedStringArray("res://addons/GDPaho/plugin.cfg", "res://addons/easy_charts/plugin.cfg")

demo/scenes/MQTTPull.tscn

+2
Original file line numberDiff line numberDiff line change
@@ -23,3 +23,5 @@ text = "Received data:"
2323
custom_minimum_size = Vector2(200, 25)
2424
layout_mode = 2
2525
text = "<no_data>"
26+
27+
[connection signal="connected" from="." to="." method="_on_MQTTPull_connected"]

demo/scripts/MQTTPull.gd

-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ func _on_MQTTClient_received(_topic: String, payload: String) -> void:
1414
_data.text = "<empty>"
1515
else:
1616
_data.text = payload
17-
print(payload)
1817

1918

2019
func _on_MQTTPull_connected(_reason_code: int) -> void:

0 commit comments

Comments
 (0)