10-05-2011
How you organize source files often depends on -- and is constrained by -- how you must compile and link them.
I've seen projects where each little class gets its own separate folder and makefile. These tend to be slow to compile due to all the recursive makes calling makes, and the include paths can be horrendously complex. I don't recommend this model.
On the other end of the scale, I've seen projects where the header files are all lumped in one general include/ folder, and the source files organized by folder. This lets you feed -I ./include into $(CC) and mostly forget about headers. Sometimes you see folders inside the ./include/, and files included like #include <subfolder/subtype.h>. Sometimes you see local .h files in the same source folders as the .c/.cpp files included by #include "localheader.h" alongside header files in a global ./include/ which get included by a #include <globalheader.h> This might be less useful in C++ than C, since C can get away with local-only types and undefined types a lot of times C++ classes can't.
I've also seen projects which are organized into sub-libraries internally, compiled separately and linked in with additions to include and library paths. This is sort of like the first strategy, but with many source files and headers per project instead of few. It helps compartmentalize things while reducing the amount of headaches from enormous path lists and recursing recursion...
It might be useful to really break it up into separate libraries, too. I've often found large applications to be full of things which should have been libraries, being useful in other contexts or easily replacable by standard equivalents, but weren't... Sometimes that's the only thing which makes a 'large' application 'large'...
It's much easier to compartmentalize a C library than a C++ one. It's also much easier to bind C code than C++ code into other languages. This is why you'll often find libraries written in pure C, and C++ template wrappers to turn them into classes for people who want them.
Last edited by Corona688; 10-05-2011 at 01:32 PM..
7 More Discussions You Might Find Interesting
1. Shell Programming and Scripting
Hello all,
I used to have a great script and I lost it :(
What the script did was searched a directory named say "music"
It searched all sub directories for .mp3 files
Then placeed all the .mp3's into a directory of the band name
It also renamed the .mps "track#, band name, album name" (I... (9 Replies)
Discussion started by: komputersman
9 Replies
2. Shell Programming and Scripting
I have a bunch of log files generated from a shell script, its all of my facebook friends and if theyre logged in. Each file is a different person. It runs every 5 minutes. The log file is just the date and time, then 1 if theyre logged in or 0 if theyre not. part of one of the files is:
Mon Aug... (5 Replies)
Discussion started by: killer54291
5 Replies
3. Shell Programming and Scripting
Hi,
I'm fairly new at scripting.
I need to write a script that takes files from a source directory puts them in a target directory and sorts them by artist name.
This is what I have so far
#!/bin/bash
source_dir='/home/tcindy/songs'
target_dir='/home/tcindy/music'
for path in... (2 Replies)
Discussion started by: tcindy
2 Replies
4. Shell Programming and Scripting
Hello,
Following are the log of my sms application
COMMAND:
#tail -30 /var/log/smsd.log | grep Message_id | awk '{print $1,$2,$9}'
OUTPUT:
2011-02-21 12:16:20,5, 03218975857,
2011-02-21 12:16:26,5, 03323048252,
2011-02-21 12:16:53,5, 03323048252,
2011-02-21 12:16:59,5,... (1 Reply)
Discussion started by: telnor
1 Replies
5. Shell Programming and Scripting
hey im trying to get the hex diffrences in two files ones called new and the other is named old i want it to phrase into my script,
heres how i need the info:
input='\x'94 #the new 1 byte hex change
offset=00000000 #the 1st offset of the difference
patch
unset input offset
input='\x'34... (5 Replies)
Discussion started by: lewisdenny
5 Replies
6. Shell Programming and Scripting
Hi I have a file passwd_exmpl that contains:
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync... (5 Replies)
Discussion started by: eladage
5 Replies
7. Shell Programming and Scripting
I have an output file in the form
Hostname
Value1=abc
Value2=def
Value3=xyz
Hostname1
Value1=abc1
Value2=def1
Value3=xyz1
Hostname2
Value1=abc2
Value2=def2
Value3=xyz2
|
|
|
And so on…..
I need to export this output into csv so then it should be in format (8 Replies)
Discussion started by: rahul2662
8 Replies
rmf(1mh) rmf(1mh)
Name
rmf - remove folder
Syntax
rmf [ +folder ] [ -help ] [ -[no]interactive ]
Description
The command removes all of the messages within the current folder, and then removes the folder itself. If there are any files within the
folder which are not part of MH, they are not removed, and an error message is displayed.
You can specify a folder other than the current folder by using the +folder argument. If you do not specify a folder, and cannot find the
current folder, asks you whether you want to delete instead.
If the current folder is removed, it makes current.
Note that the command irreversibly deletes messages that do not have other links, so use it with caution.
If the folder being removed is a sub-folder, the parent folder becomes the new current folder, and tells you that this has happened. This
provides an easy mechanism for selecting a set of messages, operating on the list, then removing the list and returning to the current
folder from which the list was extracted.
Using to delete a read-only folder deletes the private sequence and current message information from the file, without affecting the folder
itself. If you have sub-folders within a folder, you must delete all the sub-folders before you can delete the folder itself.
Options
-help Prints a list of the valid options to this command.
-interactive
-nointeractive
Asks for confirmation before deleting a folder. By default, deletes a folder and its messages without asking for confirmation.
If you specify the -interactive option, asks if you are sure before deleting the folder. You are advised to use this option,
since when deletes a folder its contents are lost irretrievably.
Examples
This example shows how asks for confirmation when the -interactive option is used:
% rmf -interactive +test
Remove folder "test"? y
Profile Components
Path: To determine the user's Mail directory
Files
The user profile.
See Also
rmm(1mh)
rmf(1mh)