Move blogs into pages directory.
This commit is contained in:
53
pages/blog/2021-08-28-cmake-externalproject-module.html.php
Normal file
53
pages/blog/2021-08-28-cmake-externalproject-module.html.php
Normal file
@ -0,0 +1,53 @@
|
||||
<p>Recently I've started working on a C++ project that uses the CMake build
|
||||
system.<sup><a href="#r1" >[1]</a></sup> The first thing I was in charge of
|
||||
doing was fixing the build, as one of the dependencies is the SeetaFace2
|
||||
project.<sup><a href="#r2" >[2]</a></sup> Originally you had to have the
|
||||
SeetaFace2 project in a directory adjacent to the SeetaRest project directory,
|
||||
and you would manually compile SeetaFace2. This, for obvious reasons, is not a
|
||||
good build setup. So my task was to integrate it directly into the build using
|
||||
CMake's <code>ExternalProject</code>
|
||||
module.<sup><a href="#r3" >[3]</a></sup></p>
|
||||
|
||||
<p>Generally, for those of us used to the way things work on Linux, generally
|
||||
speaking you want to work solely with the dependencies you can install from your
|
||||
distribution's repositories. The problem with this is, save for certain very
|
||||
popular libraries/tools, there are some inconsistencies as to what packages may
|
||||
be available in different distributions, what versions they have available, or
|
||||
even if it's compiled with the flags you need for your project. It's still ideal
|
||||
to link to something from the repositories, but it's not always possible.</p>
|
||||
|
||||
<p>This is where <code>ExternalProject</code> comes in. This allows for
|
||||
dependencies to be downloaded and compiled with specific options that best suite
|
||||
the project. It's also done in a rather simple manner. Just by looking at the
|
||||
<code>SeetaFace2.cmake</code> module for the project, it's fairly easy for
|
||||
anyone with a basic knowledge of CMake syntax to see how this project is built
|
||||
and setup.<sup><a href="#r4" >[4]</a></sup> And since you're having to build an
|
||||
entire other project, it's also helpful that you have the option of choosing
|
||||
which targets to build (instead of the entire project).</p>
|
||||
|
||||
<ol class="refs" >
|
||||
<li id="r1" >
|
||||
<a href="https://gitgud.io/bug-zapper-software/seeta_rest"
|
||||
target="_blank" >
|
||||
"Seeta Rest" on GitGud
|
||||
</a>
|
||||
</li>
|
||||
<li id="r2" >
|
||||
<a href="https://github.com/seetafaceengine/SeetaFace2/"
|
||||
target="_blank" >
|
||||
"SeetaFace2" on GitHub
|
||||
</a>
|
||||
</li>
|
||||
<li id="r3" >
|
||||
<a href="https://cmake.org/cmake/help/latest/module/ExternalProject.html"
|
||||
target="_blank" >
|
||||
ExternalProject CMake documentation
|
||||
</a>
|
||||
</li>
|
||||
<li id="r4" >
|
||||
<a href="https://gitgud.io/bug-zapper-software/seeta_rest/-/blob/master/CMake/SeetaFace2.cmake"
|
||||
target="_blank" >
|
||||
<code>SeetaFace2.cmake</code> file from Seeta Rest on GitGud.
|
||||
</a>
|
||||
</li>
|
||||
</ol>
|
Reference in New Issue
Block a user