| # Adding Usage Requirements for Library # |
| |
| Usage requirements allow for far better control over a library / executable's |
| link and include line. While also giving more control over the transitive |
| property of targets inside CMake. The primary commands that leverage usage |
| requirements are: |
| |
| - target_compile_definitions |
| - target_compile_options |
| - target_include_directories |
| - target_link_libraries |
| |
| First up is MathFunctions. We first state that anybody linking to MathFunctions |
| needs to include the current source directory, while MathFunctions itself |
| doesn't. So this can become an INTERFACE usage requirement. |
| |
| Remember INTERFACE means things that consumers require but the producer doesn't. |
| |
| target_include_directories(MathFunctions |
| INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}) |
| |
| Now that we've specified usage requirements for MathFunctions we can safely remove |
| our uses of the EXTRA_INCLUDES variable. |
| |
| Run cmake or cmake-gui to configure the project and then build it with your |
| chosen build tool. |