ILAng with CMake

C++ project using CMake

To utilize ILAng in your C++ projects, you can look for the ilang::ilang interface target in your CMake recipe. This target manages and populates the required usage information such as include directories, linked libraries, compile features, etc. ILAng features (excluding features-in-development) are defined in the header file ilang++.h.

// cxx source
#include <ilang/ilang++.h>

void foo () {
    auto m = ilang::Ila("ila_name");
}

External

With ILAng installed (out-of-source), you can locate the target directly with find_package() and use the imported target from the generated package configuration:

# CMakeLists.txt
find_package(ilang REQUIRED)

add_library(MyProj ...)

target_link_libraries(MyProj PRIVATE ilang::ilang)

A template repo for starting a project using ILAng can be found in PrincetonUniversity/template-ila.

Embedded

ILAng also supports embedded (in-source) build. To embed the library into an existing CMake project, place the entire source tree in a sub-directory and call add_subdirectory() in your CMake recipe:

# CMakeLists.txt
add_subdirectory(ilang)

add_library(MyProj ...)

target_link_libraries(MyProj PRIVATE ilang::ilang)

Supporting both

To allow your project to support either an externally installed or an embedded library at config time, you can use the following pattern:

# top level CMakeLists.txt
project(MY_PROJ)

option(MY_PROJ_USE_EXTERNAL_ILANG "Use an external ILAng library" OFF)

add_subdirectory(externals)

add_library(MyPorj ...)

target_link_libraries(MyProj PRIVATE ilang::ilang)

And put the ILAng source (or sub-modules) in the sub-directory externals/ilang.

# externals/CMakeLists.txt
if(MY_PROJ_USE_EXTERNAL_ILANG)
    find_package(ilang REQUIRED)
else()
    add_subdirectory(ilang)
endif()

Last updated