Reduce compile time when already using Git [closed] - c++

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 2 years ago.
Improve this question
I am an embedded engineer writing programs in C. We have started a big project in C++, including FreeRTOS, touch display functionality and more. The problem is that the compile time is large (almost 1 minute), even though we are in the initial project stages. We would like to reduce that time.
From my search, I found out that a build server could be installed with Continue Integration tools, in order to reduce that time. I saw that SVN from Apache was a very popular result in my google search, but the thing is we are using Git. So I found out about Jenkins but it has many capabilities (pipeline, testing etc) that even though they are really cool, I don't need them right now. For the time being I am looking only to reduce the compile time.
Is there any simpler tool to use in order to achieve this? Please have in mind that I am not a PC software or a server guy, so some things are more difficult for me to understand, search and study, (thankfully I have an IT to support me) but I have the good will to dig in if someone with previous experience will point me to a right direction.
Thanks in advance.

Most large projects run a nightly full build and unit test to identify problems created by new changes. Jenkins is a good tool to use for that.
To reduce time to build in your local workspace you need a good makefile that only rebuilds the files that have changed or which include changed header files.

You do not need the build server. Developers work on their desks, compiling, flashing and debugging - semetimes soldering experimentig etc etc. The idea is a complete nonsense.
IAR IDE is very slow comparing to other similar systems. If you have many files in your project checking dependencies (if you have changed one file only may take ages). IAR to gcc/make (from my experience) build time is about 10:1, single file change (many thousands files in the project) 30:1. IMO you should reconsider the chosen toolchain.

Related

Visual Studio 2015 automatically include missing includes [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 7 years ago.
Improve this question
I wanted to ask if anyone of you knows if there is a setting or plugin for Visual Studio 2015 Enterprise to automatically include any missing things, example if a namespace is missing or if "endl" is missing it includes the class.
Thanks!
I'm afraid not only can I not find / am not aware of such a plugin - I doubt it will ever exist.
The problem comes that without knowing every include file on your computer (which is a very time consuming/hard process), how could said plugin know which one you wanted?
Example:
I have marmalade (A cross platform development tool), Cygwin-Dev (A windows unix-shell), a GCC-cross compiler and visual-studio installed.
This means my computer has four (if not more) versions of "iostream", as well as several different implementations of the standard library (for different platforms).
How could such an add in know "which" include I wanted?
Personal opinion:
I understand what you are looking for, but honestly - even if such a tool did exist, I would advise against using it. when you get beyond simple example "hello world" programs and alike, C++ include files become a non-trivial subject. A single project I am involved in professionally has near two-thousand header-files, ranging from Iostream, though to third-party libraries, and near a thousand home-grown files.
Managing and understanding what to include and where is an essential skill of the C++ programmer, and quickly becomes second nature.
P.S.
Remember that every function on sites such as en.cppreference.com/w/ will state at the top of the page what header file you need to include them. Reading such reference pages will (also) become second nature in due time.

Communication method for data exchange between a server and several clients for 10+ years [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 7 years ago.
Improve this question
We're running an experiment which will involve collecting data from multiple stations around the world. Each station will be providing HDF5 files with magnetic field measurements in a rate of 1 kHz and some auxiliary data in real time. The latency is going to be a few minutes.
I'm assigned to design this program (in C++, with clients/server model, with server being in linux and clients being cross-platform), and apparently I'll be designing this from scratch. My first concern is not to really do everything from scratch because this will be more error prone and pure wrong, so my question here is: What information/file transfer protocols/libraries should I use so that
The program can live for 10+ years with minimal maintenance
I can have very good support from the community for when I need help.
Since we need something relatively secure, my first thought was libssh (the only cross platform opensource library available out there for ssh), but then after discussing with some pros there I realized that the support there isn't so wonderful because only a few people work with libssh. The pros there hesitated in suggesting OpenSSL, but with OpenSSL I'll have to write my own authentication (apparently, I'm not an expert and that's why I'm asking).
What would you suggest? Please share your vision to whether I should go for OpenSSL, libssh, or something else.
PS: Please, if you're going to start off by saying this question is off-topic, move on and ignore it. Consider being helpful rather than critical.
If you require any additional information, please ask.
I think that OpenSSL might be a good choice.
No you do not have to "write you own authentication" - you just need to generate certificates and keys and put them in the right places - that is all.
I would suggest to look at the examples in <openssl-source-dir>/demos and <openssl-source-dir>/apps to get you started. Reading a book about OpenSSL would also be a good idea - for many other reasons (sometimes not directly related with SSL/TLS).
I hope that helps.

Tool for quickly creating project skeletons [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 3 years ago.
Improve this question
I has been a C++ and Python developer for a looong time, and after this many years the place I feel most comfortable for developing is the old good gvim and the command line. I was wondering if there is some sort of tool for setting up projects quickly. Something like generating a bunch of files where a few things can change their values: the project name for example.
There are many tools like this. Cookiecutter is written in Python, and it has project templates for many languages and frameworks.
I would suspect that most modern Integrated Development Environments would support something like this.
Why don't you write your own tool with some scripting language?
I have done it by tailoring GNU makefiles trying to push most of the logic outside of the project. Then have a small script that generates directories and writes simple makefiles that set a couple of variables and then includes the pre-generated makefiles.
You might want to consider instead of producing makefiles directly, generating files for other intermediate system like CMake or SCONS, as those will be able to abstract the differences from one system to another.

Looking for introduction of nmake & makefile structure [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 6 years ago.
Improve this question
I am looking for some basic information regarding makefile structure. Any pointers will be highly appreciated. Thanks.
Official NMAKE documentation.
There are several other types of build systems that use "makefiles". Several of the other answers here are pointing you to these other systems. They all implement the same basic ideas, but the capabilities and syntax vary, sometimes in subtle ways. If you need to learn how to use NMAKE (which is the one you mentioned in the title), and you read GNU make documentation, you're likely to get confused.
The best help I think I can give anyone desiring to learn how to write their own makefiles is:
DON'T DO IT!!!
Use a makefile generator. There's a lot out there. One of the best I've seen is CMake but there's also automake/autoconf/all that.
You can also use a totally different build system like Ant (but that's by far the only option in this category).
Make actually kind of sucks. I haven't touched one in 10 years. Put your development effort where it will do the most good, in your code.
For very quick start (if you haven't yet tried) - read this, very simple.
If you want start writing makefiles in couple hours - this one.
To be a monster in makefiles use official, commonly you need this as reference book.
You may want to have a look at the Autobook
I agree with most earlier responders: don't continue to be dependent on NMake, use newer tools. Ant, MSBuild, Maven, Scons, GNU/autotools, etc. But, if you really want to learn more about NMake, check out the Microsoft Rotor (SSCLI) source distro, it includes the source to NMake, at least a hacked-up snapshot needed to bootstrap Rotor's build. And for better examples of Nmakefiles, look in early Win32 SDKs, and later OS/2 SDKs, that was the heydey of complex Nmakefiles.

What are some small, fast and lightweight open source applications (µTorrent -esque)? [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 7 years ago.
Improve this question
Possible duplicate
What is the best open source example of a lightweight
Windows Application?
µTorrent is a small bit-torrent client, a really small one. It doesn't come with an installer, just a exe, you drop in your PATH somewhere. It's super lightweight and yet feature rich. Plus it is the work of one man. It's also closed-source.
Many people have been curious about how it has been written, and there are hints here and there about a custom library etc. But the question is, are there any programs with attributes like µTorrent that are available with source code--attributes like speed, small size, awesomeness.
Possible related question (/questions/9603/what-is-some-great-source-code-to-read), but think smaller than something like the Linux kernel.
Clarification: I don't want examples of bit-torrent source code, but anything which is used by tons of people (validation of awesomeness) and also fast, small and awesome!
I think you should take a look at Notepad++ if you want to see a feature-rich low-consumption of power software :)
Netcat
It's the program that started all of the curiousity behind networks and how things WORK.
Everyone's looked at this source code.
rTorrent is a lightweight, feature-rich, console-only open-source torrent client.
I like Frhed, a simple open-source Windows hex editor.
FRESHMEAT is a great place to start. There are lots of small open source programs available that you can study.
Examples:
XML-RPC specification.C implementation for Python. Its easy to learn and its fun.
Heapq [\Lib\heapq.py] , xml-rpc [\Lib\xmlrpc] and lots of other codes in Python library are very well written.