What needs to be considered when setting up for Linux Development? [closed]
- by user123586
I want to set up a box for Linux development.
I have a working linux install with the usual toolchain and an IDE. I'm looking for advice on how to approach structuring accounts and folders for development. As the Perl folks say "There's always more than one way to do it." Left to my own devices, I'll come up with several unproductive ways of doing it before figuring out what an experienced Linux programmer would think obvious.
I'm not looking for instructions to follow for a specific set of tools or a specific software package. Instead, I'm looking for insight into what decisions need to be made and how to make them, with understanding of the advantages and disadvantages of each individual choice.
These are some of the questions that come up:
Where to put sources
Where to put built object files and libraries
where to install
what to set in environment variables
what compiler flags matter and how do you manage them across several types of builds
what configuration entries to make in an IDE
how to manage libraries to support multiple environments
how to handle different build versions such as debug vs release, or cross platform builds
If you are an experienced Linux developer, the answers to these questions may seem trivial and obvious.
I'd like to learn to make decisions about these questions that result in as little manual configuration as possible, given some existing sources, a particular IDE, or no IDE at all, a paticular set of development libraries etc.
At this point you're probably thinking: Can you be more specific? Sure. But remember that I'm trying to learn how to think about this stuff, not just follow a recipie for a specific set of results.
Example:
Setup a project that uses CMake for some of its components, autogen.sh followed by configure for others and just configure for a few more:
debug builds without an IDE
debug builds in NetBeans
debug builds in Eclipse
debug build in Visual Studio
all of the above with release builds for Linux, Mac and Windows.
So...
**What are your thoughts on an approach that works for all four?
Do you have any advice on what to read?**