Skip to content

Instantly share code, notes, and snippets.

@devpikachu
Created February 15, 2021 11:09
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save devpikachu/990c86607abcca49119d544d5827185d to your computer and use it in GitHub Desktop.
Save devpikachu/990c86607abcca49119d544d5827185d to your computer and use it in GitHub Desktop.
##################### ROOT PROJECT #####################
cmake_minimum_required(VERSION 3.17)
project(OmniliumKnox VERSION 0.1)
configure_file(Config.h.in core/include/Config.h)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED True)
ADD_DEFINITIONS(-DUNICODE)
ADD_DEFINITIONS(-D_UNICODE)
add_subdirectory(core)
add_subdirectory(knoxcli)
add_subdirectory(knox)
##################### Core #####################
set(LIB_NAME Core)
add_compile_definitions(CORE_EXPORTS=1)
set(PRIVATE_H_FOLDER "${CMAKE_CURRENT_SOURCE_DIR}/private")
set(CPP_FILES
"Core.cpp"
"Logging.cpp"
"Utils.cpp"
"dllmain.cpp"
"RAIITemplates.cpp"
"MappedFile.cpp"
)
set(PUBLIC_H_FILES
"Core.h"
"Logging.h"
"Utils.h"
"RAIITemplates.h"
"MappedFile.h"
)
set(PRIVATE_H_FILES
"${PRIVATE_H_FOLDER}/pch.h"
)
add_library(${LIB_NAME} SHARED
${CPP_FILES}
${PUBLIC_H_FILES}
${PRIVATE_H_FILES}
)
target_include_directories(${LIB_NAME} PUBLIC
"${PROJECT_BINARY_DIR}"
"${CMAKE_CURRENT_SOURCE_DIR}"
)
target_include_directories(${LIB_NAME} PRIVATE
"${PRIVATE_H_FOLDER}"
)
target_precompile_headers(${LIB_NAME} PRIVATE
"${PRIVATE_H_FOLDER}/pch.h"
)
install(TARGETS ${LIB_NAME}
RUNTIME DESTINATION bin
)
##################### KnoxCLI #####################
set(EXE_NAME KnoxCLI)
set(PRIVATE_H_FOLDER "${CMAKE_CURRENT_SOURCE_DIR}/private")
set(CPP_FILES
"KnoxCLI.cpp"
)
set(PRIVATE_H_FILES
"${PRIVATE_H_FOLDER}/pch.h"
"${PRIVATE_H_FOLDER}/Resources.h"
)
add_executable(${EXE_NAME}
${CPP_FILES}
${PRIVATE_H_FILES}
"app.rc")
target_include_directories(${EXE_NAME} PRIVATE
"${CMAKE_CURRENT_SOURCE_DIR}"
"${PRIVATE_H_FOLDER}"
)
target_precompile_headers(${EXE_NAME} PRIVATE
"private/pch.h"
)
target_link_libraries(${EXE_NAME} PUBLIC
Core
)
install(TARGETS ${EXE_NAME}
DESTINATION bin
)
##################### Knox #####################
include(cmake/App.cmake)
set(EXE_NAME Knox)
set(PRIVATE_H_FOLDER "${CMAKE_CURRENT_SOURCE_DIR}/private")
set(CPP_FILES
"main.cpp"
"Knox.cpp"
)
set(PUBLIC_H_FILES
"Knox.h"
)
set(PRIVATE_H_FILES
"${PRIVATE_H_FOLDER}/pch.h"
"${PRIVATE_H_FOLDER}/Resources.h"
)
set(ASSETS
"app.rc"
"app.ico"
"assets/app.html"
)
set(SOURCE_FILES
${CPP_FILES}
${PUBLIC_H_FILES}
${PRIVATE_H_FILES}
${ASSETS}
)
set(ENABLE_INSPECTOR True)
add_app(${EXE_NAME} "${SOURCE_FILES}")
target_include_directories(${EXE_NAME} PRIVATE
"${CMAKE_CURRENT_SOURCE_DIR}"
"${PRIVATE_H_FOLDER}"
)
target_precompile_headers(Knox PRIVATE
"${PRIVATE_H_FOLDER}/pch.h"
)
target_link_libraries(${EXE_NAME} Core)
install(TARGETS ${EXE_NAME}
DESTINATION bin
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment