-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathCMakeLists.txt
32 lines (24 loc) · 1.33 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
SET(MODULE_NAME "Command")
SET(MODULE_DIRECTORY "Command")
set(CMAKE_C_COMPILER /usr/bin/gcc)
set(CMAKE_CXX_COMPILER /usr/bin/g++)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
# Including source code
set(PROJECT_SOURCE_DIR ${CMAKE_HOME_DIRECTORY}/${MODULE_DIRECTORY}/src)
set(PROJECT_INCLUDE_DIR ${CMAKE_HOME_DIRECTORY}/${MODULE_DIRECTORY}/include)
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_HOME_DIRECTORY}/${MODULE_DIRECTORY}/lib)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_HOME_DIRECTORY}/${MODULE_DIRECTORY}/bin)
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_HOME_DIRECTORY}/${MODULE_DIRECTORY}/bin)
file(GLOB COMMAND_SOURCE_FILES_TOP "${PROJECT_SOURCE_DIR}/${MODULE_DIRECTORY}/*.cpp")
file(GLOB_RECURSE COMMAND_SOURCE_FILES_NESTED
${PROJECT_SOURCE_DIR}/${MODULE_DIRECTORY}/Factory/*.cpp
${PROJECT_SOURCE_DIR}/${MODULE_DIRECTORY}/Function/*.cpp
${PROJECT_SOURCE_DIR}/${MODULE_DIRECTORY}/Operation/*.cpp
)
set(COMMAND_SOURCE_FILES ${COMMAND_SOURCE_FILES_TOP} ${COMMAND_SOURCE_FILES_NESTED})
include_directories("${PROJECT_INCLUDE_DIR}")
include_directories("${PROJECT_SOURCE_DIR}")
add_library(${MODULE_NAME} SHARED ${COMMAND_SOURCE_FILES})
target_include_directories(${MODULE_NAME} PUBLIC ${PROJECT_INCLUDE_DIR})
add_executable(CommandPattern ${PROJECT_SOURCE_DIR}/main.cpp)
target_link_libraries(CommandPattern ${MODULE_NAME})