Building and Compiling - ktopolov/DatabaseSystem GitHub Wiki
To create a compiled project, we must be able to build the project. This repo will use the cmake software to handle building and the g++ compiler for C++ code.
Overview of CMake
CMake requires a CMakeLists.txt within each directory that contains source code. When we invoke cmake, it generates a Makefile which tells the compiler where all of our files are located. Essentially, we could manually create this Makefile, but that is extremely annoying and difficult.
Assume you have a repo with code lying in the /src folder:
- Create a
CMakeLists.txtfolder in the source code directory called/src/CMakeLists.txt. An example looks like:
# Specify CMAKE version
cmake_minimum_required(VERSION 3.16.3)
# Give the project a name. CMake will automativally store this name as the variable PROJECT_NAME
project(Database)
# add_executable(name_of_output_file, name_of_source_file)
# This will produce an executable file from main.cpp with same name as PROJECT_NAME variable
add_executable(outfile.o main.cpp)
The workflow is:
- If any files have been moved/added or this is your first time, run
cmake -S <PATH_TO_TOP_LEVEL_CMakeLists.txt> -B <DESIRED_BUILD_DIR>to have CMake generate a makefile. The-Sflag tells CMake where is the first CMAleLists.txt file to look at. The-Bflag tells it where the desired build directory is, and it will put the make files there. If the-Bdirectory does not yet exist, it will be created. - Once the make files exist, to build the project trun
make -C <{PATH_TO_BUILD_DIR>, which will make the project.
In the above example, there should be a outfile.o in the build directory that can be run