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.
Related
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.
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 5 years ago.
Improve this question
I'm working on a project in C++ with and the ROS Catkin compiler system (Ubuntu). Its my first real project with ROS and I would to keep the setup simple (as the code itself will be hard enough).
Preferably I would like to just use Sublime to edit the code, but it has no c++ intellisense (already found a linter and formater plugin). I also tried Eclipse, but there the intellisense seems to not work unless I set up a whole project.
Does anyone know a simple setup for c++ intellisense on Ubuntu (using Sublime/Eclipse or something else)?
I'd really love to have it as it allows to naturally explore new libraries without the need to open the documentation for. ever. new. class.
This is the plugin I use for atom text:
https://atom.io/packages/autocomplete-clang
I believe it exists for sublime as well:
https://packagecontrol.io/packages/ClangAutoComplete
Eclipse has a C++ IDE version, so use that if you want to use eclipse:
http://www.eclipse.org/downloads/packages/eclipse-ide-cc-developers/keplersr2
And also, if you don't mind IDEs you should check out QTCreator and Kdevel, the first I've noticed to be one of the most used IDEs for people that don't just use vim or emacs. Kdevel I've used a bit and it has some interesting features, though some things might be lacking. In both cases there are some speed problems with autocompletion (wait times of 100-500ms) and code highlighting (sometimes it breaks a bit and highlights the wrong line or doesn't highlight at all, but that's very rare)
Another alternative that people might mention is CLion, which is from Jetbrains, but its closed-source, not well supported and whilst it might look nicer than QTcreator it has more or less the same features but is much more resource-heavy and laggy, so I'd pass on that.
Also, most of the "old guard" seem to swear by vim and/or emcas and if you have a lot of time on your hands you could check out a guide for setting up one of those as a C++ text editor, they both have very mature plugin systems and whilst they might be harder to get into they might also give you more freedom and more interesting plugins.
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 5 years ago.
Improve this question
The thing that really turns me off about Boost is their documentation. What I need is a good reference, and instead of explaining what a good reference is to me I would give example:
java.sun.com/javase/6/docs/api/
Yes I love it. It is also this:
cppreference.com/wiki/stl/vector/start
On the other hand what I find about boost is something like this:
http://www.boost.org/doc/libs/1_40_0/libs/smart_ptr/shared_ptr.htm
Basically some long page of text. Almost no formatting, some bold text here and there and hopefully some links between elements. Not to mention that smart_ptr is one of the better documented libraries.
If you do not find the difference between this and the above examples please stop reading and ignore this post. Do not get me wrong, I write C++ and I use Boost. At my firm we use at least 4 of their libraries, still each and every time I need to check a method prototype for instance it gets me out of my nerves scrolling through their essays. And yes I know that Boost is a collaborative project and that different libraries are developed by different teams.
So does any of you share my disappointment with Boost's reference and do you know some better site documenting the Boost libraries?
In general, I don't find the documentation is that bad. In general again, the information is "somewhere" in there. The main problem I see is a lack of uniformity, making it difficult to find that "somewhere". As you write in your question, the docs were written by different people, and a different times, and that's probably the cause for this lack of a common structure.
From the java and cppreference links you cite in example, I infer that you are more interested in the synopsis of the interface than in "tutorial" or "motivation" stuff. For shared_ptr, does http://www.boost.org/doc/libs/1_40_0/libs/smart_ptr/shared_ptr.htm#Synopsis provide what you're after?
For some libs, the "test" and "example" directories under libs/<library_name> are useful.
You may post your questions, comments and suggestions on the boost users and/or documentation mailing lists. From what I see there, specific documentation improvement suggestions are normally welcomed by the library maintainers.
If you are looking for an introductory text I found the Bjorn Karlsson book very good. It was a while ago when I read it so there may be more up to date texts available now. Find it here.
I most definitely agree. Javadoc is nasty, nasty stuff. But it is thorough and consistent across nearly every project. Compare the browsability of a random Jakarta project's documentation with that of a random Boost project.
Looking at the Java link provided, well more than half of it is obsolete for quite some time now :)
You have PDF tools and PDF format of the docs now.. There are tools and more on its way, from boostbook for lib writers ages ago to synopsis and more.. Build your own or parse existing majority of markup cost to an already overblown project :)
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 5 years ago.
Improve this question
The thing that really turns me off about Boost is their documentation. What I need is a good reference, and instead of explaining what a good reference is to me I would give example:
java.sun.com/javase/6/docs/api/
Yes I love it. It is also this:
cppreference.com/wiki/stl/vector/start
On the other hand what I find about boost is something like this:
http://www.boost.org/doc/libs/1_40_0/libs/smart_ptr/shared_ptr.htm
Basically some long page of text. Almost no formatting, some bold text here and there and hopefully some links between elements. Not to mention that smart_ptr is one of the better documented libraries.
If you do not find the difference between this and the above examples please stop reading and ignore this post. Do not get me wrong, I write C++ and I use Boost. At my firm we use at least 4 of their libraries, still each and every time I need to check a method prototype for instance it gets me out of my nerves scrolling through their essays. And yes I know that Boost is a collaborative project and that different libraries are developed by different teams.
So does any of you share my disappointment with Boost's reference and do you know some better site documenting the Boost libraries?
In general, I don't find the documentation is that bad. In general again, the information is "somewhere" in there. The main problem I see is a lack of uniformity, making it difficult to find that "somewhere". As you write in your question, the docs were written by different people, and a different times, and that's probably the cause for this lack of a common structure.
From the java and cppreference links you cite in example, I infer that you are more interested in the synopsis of the interface than in "tutorial" or "motivation" stuff. For shared_ptr, does http://www.boost.org/doc/libs/1_40_0/libs/smart_ptr/shared_ptr.htm#Synopsis provide what you're after?
For some libs, the "test" and "example" directories under libs/<library_name> are useful.
You may post your questions, comments and suggestions on the boost users and/or documentation mailing lists. From what I see there, specific documentation improvement suggestions are normally welcomed by the library maintainers.
If you are looking for an introductory text I found the Bjorn Karlsson book very good. It was a while ago when I read it so there may be more up to date texts available now. Find it here.
I most definitely agree. Javadoc is nasty, nasty stuff. But it is thorough and consistent across nearly every project. Compare the browsability of a random Jakarta project's documentation with that of a random Boost project.
Looking at the Java link provided, well more than half of it is obsolete for quite some time now :)
You have PDF tools and PDF format of the docs now.. There are tools and more on its way, from boostbook for lib writers ages ago to synopsis and more.. Build your own or parse existing majority of markup cost to an already overblown project :)
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 5 years ago.
Improve this question
Is there any documentation on qpThreads? In what way is it different from pthreads?
It looks like qpthread has become a sourceforge project. It hasn't changed in four or five years from the CVS repository and doesn't seem to contain any documentation. Chances are that if you don't have docs on it, then none exist save for the source code and headers of course.
I grabbed the source out of curiosity and it looks like a pretty standard threading implementation that is layered over pthreads. The largest difference is that pthreads is a C-style interface and qpThreads is an OO interface more akin to what you might find in Java. I haven't delved into it very deeply, but you might want to look at the interfaces like java.util.Timer and java.util.concurrent. Some of the interfaces look quite similar to what qpThreads offers.
You might want to investigate replacing it with Boost.thread or something more recent. Chances are that you will have better luck maintaining it. It shouldn't be that hard to do depending on how much code you have to deal with.
From a cursory look at google search results, qpThreads seems to be an obscure C++ threading class library. pthreads is a very widely used, POSIX-compliant, multi-platform threading C API.
The most important thing about using libraries is making sure they are actively maintained.
You should use a well known and heavily used library if possible. This way you will also have a vast number of people to ask questions if you have any.
Please see this similar SO question for more details:
Good c++ lib for threading (or use the search box for more).
Found some documentation finally.
Sourceforge qpthreads