updated cmake files for standalone module builds and whole project builds
parent
acbebece3a
commit
df041574ae
|
@ -27,27 +27,11 @@ target_link_libraries(dpm dl)
|
||||||
# Export symbols for dynamic loading
|
# Export symbols for dynamic loading
|
||||||
target_link_options(dpm PRIVATE -rdynamic)
|
target_link_options(dpm PRIVATE -rdynamic)
|
||||||
|
|
||||||
# Add the info module
|
# Add the info module by including its CMakeLists.txt
|
||||||
add_library(info MODULE
|
add_subdirectory(modules/info)
|
||||||
modules/info/info.cpp
|
|
||||||
modules/info/src/infoFuncs.cpp
|
|
||||||
)
|
|
||||||
|
|
||||||
# Set module properties
|
# Create a custom target for building all modules
|
||||||
set_target_properties(
|
add_custom_target(modules DEPENDS info)
|
||||||
info PROPERTIES
|
|
||||||
PREFIX ""
|
|
||||||
SUFFIX ".so"
|
|
||||||
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/modules"
|
|
||||||
)
|
|
||||||
|
|
||||||
# Include directories for the info module
|
|
||||||
target_include_directories(info PRIVATE
|
|
||||||
include
|
|
||||||
${CMAKE_SOURCE_DIR} # Add the project root directory to search path
|
|
||||||
modules/info
|
|
||||||
modules/info/include
|
|
||||||
)
|
|
||||||
|
|
||||||
# Installation rules
|
# Installation rules
|
||||||
install(TARGETS dpm DESTINATION bin)
|
install(TARGETS dpm DESTINATION bin)
|
||||||
|
|
|
@ -1,34 +1,36 @@
|
||||||
cmake_minimum_required(VERSION 3.22)
|
cmake_minimum_required(VERSION 3.22)
|
||||||
project(dpm-info-module VERSION 0.1.0)
|
project(info_module)
|
||||||
|
|
||||||
# Set C++ standard
|
|
||||||
set(CMAKE_CXX_STANDARD 20)
|
set(CMAKE_CXX_STANDARD 20)
|
||||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
||||||
|
# Set output directory for standalone builds
|
||||||
|
if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
|
||||||
|
set(MODULE_OUTPUT_DIR "${CMAKE_BINARY_DIR}/modules")
|
||||||
|
set(DPM_ROOT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../..")
|
||||||
|
else()
|
||||||
|
set(MODULE_OUTPUT_DIR "${CMAKE_BINARY_DIR}/modules")
|
||||||
|
set(DPM_ROOT_DIR "${CMAKE_SOURCE_DIR}")
|
||||||
|
endif()
|
||||||
|
|
||||||
# Create output directory
|
# Create output directory
|
||||||
file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/modules)
|
file(MAKE_DIRECTORY ${MODULE_OUTPUT_DIR})
|
||||||
|
|
||||||
# Create shared library with the correct naming convention (no prefix)
|
# Create shared library
|
||||||
add_library(info MODULE
|
add_library(info MODULE
|
||||||
info.cpp
|
info.cpp
|
||||||
src/infoFuncs.cpp
|
src/infoFuncs.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
# Set output properties for the module
|
# Set output properties
|
||||||
set_target_properties(
|
set_target_properties(
|
||||||
info PROPERTIES
|
info PROPERTIES
|
||||||
PREFIX ""
|
PREFIX ""
|
||||||
SUFFIX ".so"
|
SUFFIX ".so"
|
||||||
LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/modules"
|
LIBRARY_OUTPUT_DIRECTORY "${MODULE_OUTPUT_DIR}"
|
||||||
)
|
)
|
||||||
|
|
||||||
# Include directories based on the actual project structure
|
# Include directories
|
||||||
target_include_directories(info PRIVATE
|
target_include_directories(info PRIVATE
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/include
|
${CMAKE_CURRENT_SOURCE_DIR}/include
|
||||||
${CMAKE_SOURCE_DIR}/../../dpmdk/include # Path to DPMDK headers outside the module directory
|
${DPM_ROOT_DIR}
|
||||||
)
|
|
||||||
|
|
||||||
# Installation rules
|
|
||||||
install(TARGETS info
|
|
||||||
LIBRARY DESTINATION /usr/lib/dpm/modules
|
|
||||||
)
|
)
|
Loading…
Reference in New Issue