目录结构
Througput
├── CMakeLists.txt
├── CPP_Throughput_Data
│ ├── CMakeLists.txt
├── CPP_Throughput_Pub
│ ├── CMakeLists.txt
├── CPP_Throughput_Sub
│__ ├── CMakeLists.txt
外层
cmake_minimum_required(VERSION 3.0)
set(PARENT_NAME Throughput)
set(LIB_NAME CPP_${PARENT_NAME}_Data)
set(PUB_NAME CPP_${PARENT_NAME}_Pub)
set(SUB_NAME CPP_${PARENT_NAME}_Sub)
add_subdirectory(${LIB_NAME})
add_subdirectory(${PUB_NAME})
add_subdirectory(${SUB_NAME})
静态库
cmake_minimum_required(VERSION 3.0)
set (PROJECT_NAME ${LIB_NAME})
project(${PROJECT_NAME})
if(NOT DEFINED ENV{RTSB_HOME})
message(FATAL_ERROR "NOT DEFINED RTSB_HOME ENV VARIABLES")
endif()
set(CMAKE_BUILD_TYPE $ENV{BUILD_TARGET})
set(CMAKE_CXX_STANDARD 11)
include_directories(
${CMAKE_CURRENT_SOURCE_DIR}/../../generated
$ENV{RTSB_HOME}/C++/CPPI
$ENV{RTSB_HOME}/OS/include
$ENV{RTSB_HOME}/DB/include
$ENV{RTSB_HOME}/KN/include
$ENV{RTSB_HOME}/UI/include
)
file(GLOB SRC_LIST ${CMAKE_CURRENT_SOURCE_DIR}/../../generated/*.cpp)
file(GLOB_RECURSE HEAD_LIST ${CMAKE_CURRENT_SOURCE_DIR}/../../generated/*.h)
set(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_SOURCE_DIR}/../../lib/$ENV{BUILD_TARGET})
link_directories($ENV{RTSB_HOME}/lib/$ENV{BUILD_TARGET}/$ENV{OSNAME}/$ENV{OS_DIST_NAME}/$ENV{OSARCH}/$ENV{OS_VERSION})
add_library(${PROJECT_NAME} STATIC ${SRC_LIST} ${HEAD_LIST})
target_link_libraries(${PROJECT_NAME}
OS
KN
CPPI
)
execute_process(
COMMAND idlpp -I "$ENV{RTSB_HOME}/etc/idl" -l cpp -d ${CMAKE_CURRENT_SOURCE_DIR}/../../generated ${CMAKE_CURRENT_SOURCE_DIR}/../../../idl/${PARENT_NAME}.idl
)
应用程序
cmake_minimum_required(VERSION 3.0)
set (PROJECT_NAME ${PUB_NAME})
project(${PROJECT_NAME})
if(NOT DEFINED ENV{RTSB_HOME})
message(FATAL_ERROR "NOT DEFINED RTSB_HOME ENV VARIABLES")
endif()
set(CMAKE_BUILD_TYPE $ENV{BUILD_TARGET})
set(CMAKE_CXX_STANDARD 11)
include_directories(
${CMAKE_CURRENT_SOURCE_DIR}/../../src
${CMAKE_CURRENT_SOURCE_DIR}/../../generated
$ENV{RTSB_HOME}/C++/CPPI
$ENV{RTSB_HOME}/OS/include
$ENV{RTSB_HOME}/DB/include
$ENV{RTSB_HOME}/KN/include
$ENV{RTSB_HOME}/UI/include
)
set(SRC_LIST
${CMAKE_CURRENT_SOURCE_DIR}/../../src/implementation.cpp
${CMAKE_CURRENT_SOURCE_DIR}/../../src/entities.cpp
${CMAKE_CURRENT_SOURCE_DIR}/../../src/publisher.cpp
)
file(GLOB HEAD_LIST ${CMAKE_CURRENT_SOURCE_DIR}/../../src/*.h)
set(EXECUTABLE_OUTPUT_PATH
${CMAKE_CURRENT_SOURCE_DIR}/../../bin/$ENV{BUILD_TARGET}/$ENV{OSNAME}/$ENV{OS_DIST_NAME}/$ENV{OSARCH}/$ENV{OS_VERSION}
)
link_directories(${CMAKE_CURRENT_SOURCE_DIR}/../../lib/$ENV{BUILD_TARGET})
link_directories($ENV{RTSB_HOME}/lib/$ENV{BUILD_TARGET}//$ENV{OSNAME}/$ENV{OS_DIST_NAME}/$ENV{OSARCH}/$ENV{OS_VERSION})
add_executable(${PROJECT_NAME} ${SRC_LIST} ${HEAD_LIST})
target_link_libraries(${PROJECT_NAME}
${LIB_NAME}
OS
KN
CPPI
)