Comments (5)
Hello @fpagliughi,
Yes, it's feasible to use wildcards to collect files with the same extension in a variable. I found two methods for CMake so far, file and aux_source_directory. However, both have the same drawback. According to the CMake documentation, they require one to rerun CMake in order to notice any file addition or removal.
Listing each file, if you change the CMakeLists.txt
, it triggers a recompilation. On the other hand, if you use wildcards, no recompilation is triggered. This happens because the CMakeLists.txt
does not change.
You can check this thread
from paho.mqtt.cpp.
Autotools does not have direct support for wildcards. It relies on GNU-Make. That's because Autotools possess some objections to the use of wildcards.
The two major objections are:
- Include/omit files by mistake.
- Wildcards are not portable to some non-GNU make implementations
Edit: Also, due to the target expansions performed by Autotools, a simple libpaho_mqttpp3_la_SOURCES = $(wildcard $(srcdir)/src/*.cpp)
does not work. The approach I found so far is to create a M4 macro similar to the AX_CXX_COMPILE_STDCXX_11
. This macro is found in our m4
directory and is used by configure.ac
.
from paho.mqtt.cpp.
Is this worth pursuing or should we just forget about it for now?
I think I've gotten the hang of adding and removing files from all the build systems, and once things settle down in a week or two, this won't be a big issue for a while.
from paho.mqtt.cpp.
@fpagliughi the official documentation of both CMake and GNU Autotools recommend avoiding the wildcard approach. Also, if you look at forums, users say the same.
IMHO, adding wildcard support might cause more troubles than benefits:
- It's less error prone to list the files. Although we might forget to list a specific file, using wildcards we risk not include a bunch of files if we get the wildcard wrong.
- It's simpler to list the files. Including wildcard support is more complex than listing files, especially in the Autotools. Also, the addition/removal of files is not done very often.
There's another approach too. We can use a git hook to detect if a new file is listed in the Makefile.am
and CMakeLists.txt
. The advantage of this approach is that it uses the same shell script language instead of specific Autotools' or CMake's idiosyncrasies.
What do you think?
from paho.mqtt.cpp.
I wasn't looking to get fancy. It's pretty simple to use wildcards with GNU Make, and I typically lay out my directories such that they can be compiled with that assumption... all library sources here, all public headers there, etc.
I'll just close this one.
from paho.mqtt.cpp.
Related Issues (20)
- CMake error while compiling paho.mqtt.cpp HOT 4
- MQTT traffic over Https Proxy HOT 1
- MQTTAsync_send cpu load increases a lot while buffering messages HOT 2
- Subscribe to broker creates a random queue HOT 2
- Arm cross compile fails on version 1.3.x - disconnect options HOT 1
- SESSION_EXPIRY_INTERVAL is int, not uint HOT 7
- token->wait() hangs when publishing from 2 threads HOT 4
- Build error on Windows 11 - Visual Studio community 2022 - Cmake 3.29.6 HOT 8
- Can not run subscription!Info:0x00007FFB16EFCF19 处(位于 mqtt_install_test_vs.exe 中)有未经处理的异常: Microsoft C++ 异常: std::bad_alloc,位于内存位置 0x000000B68D9AE370 处。 HOT 3
- Running unit tests in GitHub CI Action on Windows
- Generated docs are empty HOT 2
- Confusion with oudated installation instructions - can't find paho-mqtt3a HOT 14
- msg->get_properties() not working in message_arrived HOT 4
- Paho sync client ssl return "Error: MQTT error [-13]: SSL is not supported [0]" HOT 12
- Is there a need to resubscribe to topics in async client clean_session(false) when disconnect event [-3] occurs. HOT 2
- paho-mqtt3a-static not found(does not already exist) HOT 2
- async_client does not use MQTTAsync_connect5 when connecting to MQTT brokers with protocol version 5 HOT 2
- 如何设置本地指定的ip 和 服务端建立连接 HOT 2
- Do you know which interface to call to set the specified network ip HOT 1
- mqtt\ssl_options.h(470): error C2062: type 'auto' unexpected HOT 7
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from paho.mqtt.cpp.