Converting MSVC /showInclude to unix friendly path
Hi guys,
I've been trying to do this for hours, and I've just been running around in circles trying to get this script made. I have a set of files outputted by an MSVC compiler that looks like this
and I'm converting it to spit out something that could then be imported into the makefile.
So far I've got this script:
which gets me close, but doesn't make the paths into anything cygwin would appreciate. The output from this looks like:
As you can tell, two things stand out here. First of all, all I'm doing is replacing the \n with a " " and then getting rid of the first quotation when I go to add the ":" to tell the makefile that the source file depends on the headers listed. This means that there is no trailing quotation mark and I'm not familiar enough with unix commands and pipes to be able to add that last quotation.
The second issue is the more difficult one. I need all the paths to be converted to using linux style paths, and I can not figure that one out. I know cygwin has a utility function called cygpath, but that only works when you feed it one path at a time. I don't know how to do that from the bash shell and I have no idea where to even start.
Could you guys give me some tips on how to approach this problem?
---------- Post updated 02-13-11 at 12:49 PM ---------- Previous update was 02-12-11 at 04:16 PM ----------
I think I've got it. It doesn't look pretty, but it works for now
That appears to format the line the way Make would accept it. I was just wondering, is there an easier way? More flexible way? I'm hard coding quite a bit in this simple script and I don't like that.
---------- Post updated at 01:22 PM ---------- Previous update was at 12:49 PM ----------
Actually, I was a little off. I forgot that makefiles don't care about quotes around file names. It appears as though there is no quick fix for this. Placing wildcards in the file doesn't solve the problem, and moving the folders is also not an option.
This simple makefile is turning out to be a lot more complex then I thought!
Even putting simple "\\ " when replacing the strings doesn't solve the problem because then it complains about MS-DOS path names. I have no idea where to go next.
I've got it now. It took a long time of trial-and-error(and lots of errors) but eventually I found out how to do it. A simple google search showed that putting "\\ " would work with file names that have spaces in them, but it actually requires just a "\ "(which actually makes more sense).
The final line looks messy, but here it is:
Fairly nasty, but it does the trick.
---------- Post updated at 05:00 PM ---------- Previous update was at 04:45 PM ----------
Actually, this solves the problem of taking the /showIncludes output and parsing it to a make readable format. by using:
It also pipes the warning and error messages. It can't tell the difference between errors and correct output... This means that the first time you have an error in your code, it will spit out a bad depends.d file which is then included in the makefile, which means any further compiles are going to fail...
I can see why most people don't use /showIncludes to generate the dependency graph! However, it shouldn't be that difficult to write a script that takes the err code returned from cl.exe and then determine if it should even bother converting the depends.d.tmp. Thats the next part I am going to tackle!
I tried using cygpath before, but the limitation with it was that it could only take one argument at a time. I then tried looping through the file using a simple while loop, but that was taking ages. In the end, I found it easier just to use sed. Besides, I'd still have to find a way to get around spaces in names for makefiles to work and cygpath wouldn't do that either.
The only thing I have left is to determine if the compiler has thrown an error, and if so, redirect that error to the screen rather then trying to convert it to a makefile dependency thing.
I also tried using makedepend, but due to the microsoft specific "extensions"(also known as the microsoft incompatibilities) that conflict with some files, and also the cross platform necessity of what I'm working on, means that makedepend wasn't doing a good enough job... too bad, I would prefer to use it!
I should be able to catch if "cl" has completed successfully from within make and then have an error clause that forces it to output the contents of depends.d.tmp. I'm sure I read something about that somewhere and so I'm doing a little googling right now to see if I can locate it.
I uploaded a .dat file from sftp to my server and after using dos2unix to convert the file and check my work it says that the file was not transferred correctly and that the content is garbled. Please help (3 Replies)
Hello,
I have noticed some problems with Google complaining our site is not "https://search.google.com/www.usearch-console/mobile-friendly" using only Tapatalk.
So, after a lot of work, I have re-enabled our legacy mobile style and make some improvements and Google has declared us "mobile... (2 Replies)
First time poster and a very new Unix user, so I'll just pre-apologize for stupid questions now.
Does anybody know of a good RAID 1 hard drive backup that is Unix friendly? I want to avoid any hardcore programming. Can you recommend both NAS and non-NAS options? I need to do nightly backups... (31 Replies)
I'd like to translate a friendly url such as:
http://www.xxxyyyzzz.com/page/12345678/
to:
http://www.xxxyyyzzz.com/page/12/34/56/78/
Seems simple enough, but I cannot figure out how. Any one done this before? (2 Replies)
how do i turn on the option to check for opening and closing parenthesis in Microsoft VC++? I remember there is a setting somewhere in the options in the MS VC++ environment but not sure..
thanks (4 Replies)
Hello,
I wanted to setup user friendly ksh command prompt, by typing first character of files or directories and then tab bring up whole word. No need to type whole file/directory/command names.
Example:
cat a file like university
just typing un and then tab bring up whole university wod.... (3 Replies)
hi
i want run an unix application from a windows program/application.i am using SSH(command line version)to log on to a unix machine from windows. the application has to read a configuration file inorder to run. the configuration file .CFG is in bin in my home directory. but the application... (1 Reply)
I am trying to FTP a text file from a machine running LynxOS and I am having problems with the way windows "sees" the characters. For example this is how windows presents the text:
DevProcRcpClass
The boxes are what I am having problems with. When viewing the same file on a... (3 Replies)
I loaded OS X Panther on my Mac G4 and found that many files previously saved as Word or Word Perfect files were inadventently converted to Unix executable files. When I try to read these in Word, it cannot recognize or translate the file properly. Does anyone know how to translate these files? Is... (4 Replies)
Need Help?? We receive Files From GM Motors and they written on a Sun Workstation using the Tar Command on a 4mm Dat Tape. We have an HP sure Store 24 Tape drive that will Execpt but when i do that it says that the media is bad. was wondering if there was any software that would read it in its... (2 Replies)