Yep, that's one of the guides that got me to where I am now. But, it glosses over how all the Arduino .cpp files are involved in compiling the static libs. FWIW, that's probably something I'm just expected to know, but again, IDE noob here.
I'm still pounding away at this, trying to make sense of how VS works. I'm not sure if this is the right approach, but given the wording on step 3 (and taking a stab in the dark at how to translate instructions for one IDE that I've never used at all to another IDE I've never used before now), I've copied all the .cpp files from the cores folder (from the Arduino IDE) to a subdir in my project folder.
So, now I have C:\Users\Me\Documents\AVRStudio 5.1\Arduino-ATmega328P_16MHz\Arduino Core*.cpp
I've added this folder to my project (a static library), went through the C, C++, and Linker settings and added the include paths, optimization, debug, char, enum, F_CPU, etc. etc. I removed the default .cpp file it starts out with, using main.cpp from the distro instead.
Now, assuming I haven't stepped in anything up to this point, I try to build the project..... and it fails.
"'fabs'|'ceil' was not defined in this scope" (from the AVR lib's util/delay.h). I understand this is simply a dependency that hasn't been met, so I checked the output log to see which file it was trying to compile. Turns out, it's the first one: CDC.cpp. I can only assume it is compiling them in alphabetical order, and the majority of the dependencies don't get met until main.cpp includes Arduino.h.
Just for grins, I added back the project-titled .cpp file I got for free and added "#include <Arduino.h>" to the top, removing everything else that was added by default. I thought maybe because the core files were in a subdir, this file might get built first. Nope.
So, am I even taking the right approach here, or have I made a colossal blunder already? If so far so good, how do I insist on a particular module being compiled first? I know I could make a file called "_____MEFIRST.cpp", include Arduino.h, and I'd probably be set -- but that strikes me as a hack, and I would probably be better served by learning how to do this correctly.