I have recently begun the process of learning OpenGL to start making some Graphical applications using C++. I have installed the OpenGL SDK and I am able to build the projects properly on that. However, on the OpenGL SDK site there is little to no information what-so-ever on how to create new projects using the elements of the SDK, such as freeglut etc. I have Premake 4.0 and I understand I have to do something with the lua files, I do not know lua however and am not sure how to use the Lua files to create a new project. So could you help me out? Im using VS2010, should I create the project, then do something with premake? Or create some sort of lua file, then use premake on that? Any help would be wonderful because I am very lost, and would really like to get started with OpenGL. I have experimented a lot with this, such as copying the lua files from the sdk, but that came with no luck.
If you are not familiar with Premake4, then I strongly advise you to just use Visual Studio projects directly. If you're having trouble with that, then please amend your question with exactly what you did, and exactly the error messages that Visual Studio gave you when attempting to build. You should include:
Note: If you don't know what any of these are, then you need to stop and learn a lot more about how C++ projects work. You need to understand how compilers deal with include paths, static libraries, #defines, etc.
If you are not familiar with Premake4, and you still want to use Premake4 with the SDK, then you first must become familiar with Premake4 without the SDK. I could give you an entire premake4.lua script that you could just plug in, change a few lines, and everything would magically work (and if you want that, you could look at how the SDK's examples are built. Specifically examples/premake4.lua
). But if I did that, you wouldn't learn anything. You'd just be copy-and-pasting code, without having the slightest understanding of how it works.
So instead, I'm going to tell you what steps you should take to learn how to use Premake4.
Step 1: Hello World, Premake-style. You should make a single .cpp file that is a Hello World application. It just has a standard main
function that prints "Hello World" to the console. That's the easy part.
The hard part is the Premake4 script. Rather than creating a Visual Studio project directly, you are going to write a Premake4 script to build that project for you.
The Premake4 documentation can walk you through the steps of making your first solution and project. You will of course need to add files to that project. You should also learn how to use configurations, so that you can have a Debug and Release build. The Debug build should have symbols, and the Release build should be optimized.
Step 2: Multiple projects. Here, you have two .cpp files: test.cpp
and main.cpp
. In test.cpp
, place a function that prints something. The function shouldn't take parameters or anything. In main.cpp
, you should have the main
function that calls the function defined in test.cpp
. There should also be a test.h
which has a prototype for the function defined in test.cpp
.
The trick here is that you aren't compiling them into the same executable. Not directly. You want two projects: one named test
and one named main
. The test
project should be a static library, which compiles test.cpp
. The main
project will be the actual executable, which compiles main.cpp
. Both of them should include test.h
in their file lists.
Here, you're learning that solutions can have multiple project
s. The two projects have different file lists. Each project can have a separate kind
, which determines the type of build for that project alone. The test
project should be a StaticLib
, while the main
project should be a ConsoleApp
.
You will also need to learn to use the links command to link them together. The main
project should use links
to specify test
. test
does not need to link to something.
Step 3: Mastering directories.
Here, you're going to do the same thing as Step 2. Except for one thing: put test.h
and test.cpp
in a different directory (a subdirectory of the current one). You also want a test.lua
file in that directory, which you will execute from your main premake4.lua
file with a dofile
command. The test.lua
is where you define your test
project. You can call dofile
on the test.lua
file anytime after you have created the solution with the solution
command.
Note that the main
project will need to change the directory where it finds test.h
. You will also need to use the includedirs
command in the main
project to tell the compiler where to search for the test.h
header you include in main.cpp
.
Step 4: Back to the SDK. At this point, you should now be familiar enough with Premake4 to look back at the instructions I pointed you to and understand them a bit better. Then, just do what the instructions say. When it tells you what the first line of your script should be, make that the first line of your script. Put the UseLibs
function where it says to put them; it even gives you an example of where it goes. Think of UseLibs
as a fancy combination of links
and includedirs
.