ores.cmake.component.src
Table of Contents
src/CMakeLists.txt for a plain library component (component profile): one shared library from all *.cpp under src/, with the database/utility/sqlgen dependency set. Output projects/{component_full}/src/CMakeLists.txt. CMake target declaration for this component. Wires sources, include paths, link dependencies, and the export macro.
See the Template variable reference for the complete list of available variables and their semantics.
1. Template
The full template source. Edit here and re-tangle with
compass build --direct tangle_codegen_templates to regenerate
library/templates/cmake_component_src.mustache.
{{! GENERATED FILE — tangled from projects/ores.codegen/library/templates/cmake.org. Edit the org source. }}
{{{cmake_license}}}
{{#component}}
set(name "{{full_name}}")
set(lib_binary_name ${name})
set(lib_target_name ${name}.lib)
include(${CMAKE_CURRENT_SOURCE_DIR}/component_files.cmake)
set(lib_files ${files})
add_library(${lib_target_name} ${lib_files})
target_compile_definitions(${lib_target_name} PRIVATE {{full_name_upper}}_LIBRARY)
if(CMAKE_CXX_COMPILER_ID MATCHES "GNU|Clang")
target_compile_options(${lib_target_name} PRIVATE
-fvisibility=hidden -fvisibility-inlines-hidden)
endif()
set_target_properties(${lib_target_name} PROPERTIES
OUTPUT_NAME ${lib_binary_name})
set_target_properties(${lib_target_name}
PROPERTIES VERSION ${PROJECT_VERSION} SOVERSION ${PROJECT_VERSION_MAJOR})
target_include_directories(${lib_target_name} PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/../include)
target_link_libraries(${lib_target_name}
PUBLIC
sqlgen::sqlgen
ores.logging.lib
ores.platform.lib
PRIVATE
ores.utility.lib)
target_link_libraries(${lib_target_name} PRIVATE ores.rfl.pch)
install(TARGETS ${lib_target_name} LIBRARY DESTINATION lib)
{{/component}}
2. See also
- Parent facet: ores.cmake.component
- Template variable reference