Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/perl
- use File::Find;
- use File::Basename;
- use File::Path qw(make_path remove_tree);
- my ($sourceDir,$buildDir) = @ARGV;
- my %objDst = (); # foo -> debug/foo.o
- my %objSrc = (); # foo -> src/foo.cpp
- sub findItem {
- my $n = $_;
- my $p = $File::Find::name;
- if ( -f && $p =~ /\.cpp$/ ) {
- $bn = basename($n,".cpp");
- my $b = $bn;
- my $i = 1;
- while (exists($objPath{$b})) {
- $b = $bn . $i;
- $i++;
- }
- $objSrc{$b} = $p;
- $objDst{$b} = $buildDir . "/" . $b . ".o";
- }
- }
- find(\&findItem, $sourceDir);
- my %opts = ('CXX' => 'g++','CXXFLAGS' => '','INCPATH' => '','LINK' => 'g++',
- ,'LFLAGS'=>'','BINARY' => '','LIBS'=> '','DEL_FILE' => 'del');
- print $_ . "=" . $opts{$_} . "\n" foreach keys %opts;
- print "\n";
- my $objects = join(" ", values %objDst);
- print '$(BINARY): ' . $objects . "\n";
- print "\t" . '$(LINK) $(LFLAGS) -o $(BINARY) ' . $objects . ' $(LIBS)' . "\n\n";
- for my $b (keys %objDst) {
- print $objDst{$b} . ": " . $objSrc{$b} . "\n";
- print "\t" . '$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<' . "\n\n";
- }
- my $objectsWin = $objects;
- $objectsWin =~ s,/,\\,g;
- print 'clean: ' . "\n\t" . '$(DEL_FILE) ' . $objectsWin;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement