modernized cmake

pull/3/head
moneroexamples 5 years ago
parent d96f186e3f
commit 5204326a53

@ -1,119 +1,29 @@
cmake_minimum_required(VERSION 3.2)
cmake_minimum_required(VERSION 3.8)
set(PROJECT_NAME
xmregcore)
set(PROJECT_NAME xmregcore)
project(${PROJECT_NAME})
set(CMAKE_CXX_STANDARD 14)
set(CXX_STANDARD_REQUIRED ON)
if (NOT MONERO_DIR)
set(MONERO_DIR ~/monero)
endif()
option(BUILD_XMREGCORE_TESTS "Build tests for the project" ON)
message(STATUS MONERO_DIR ": ${MONERO_DIR}")
set(MONERO_SOURCE_DIR ${MONERO_DIR}
CACHE PATH "Path to the root directory for Monero")
list(APPEND CMAKE_MODULE_PATH
"${CMAKE_CURRENT_LIST_DIR}/cmake")
# set location of monero build tree
set(MONERO_BUILD_DIR ${MONERO_SOURCE_DIR}/build/release/
CACHE PATH "Path to the build directory for Monero")
set(MY_CMAKE_DIR "${CMAKE_CURRENT_LIST_DIR}/cmake"
CACHE PATH "The path to the cmake directory of the current project")
list(APPEND CMAKE_MODULE_PATH "${MY_CMAKE_DIR}")
set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} "${MONERO_BUILD_DIR}"
CACHE PATH "Add Monero directory for library searching")
option(BUILD_XMREGCORE_TESTS
"Build tests for the project" ON)
include(MyUtils)
include(CodeCoverage)
APPEND_COVERAGE_COMPILER_FLAGS()
set(COVERAGE_EXCLUDES
'${CMAKE_SOURCE_DIR}/ext/*'
'${MONERO_SOURCE_DIR}/*'
'${CMAKE_SOURCE_DIR}/tests/*')
find_package(Monero)
# find boost
find_package(Boost COMPONENTS
system
filesystem
thread
date_time
chrono
regex
serialization
program_options
REQUIRED)
# add src/ subfolder
add_subdirectory(src/)
set(SOURCE_FILES
main.cpp)
add_executable(${PROJECT_NAME}
${SOURCE_FILES})
# include boost headers
target_include_directories(${PROJECT_NAME}
PRIVATE ${Boost_INCLUDE_DIRS})
target_include_directories(${PROJECT_NAME}
PRIVATE ${MONERO_SOURCE_DIR}/build)
# include monero headers
target_include_monero_directories(${PROJECT_NAME})
set(LIBRARIES
myxrmcore
${Monero_LIBRARIES}
${Boost_LIBRARIES}
sodium
pthread
unbound
curl
ssl
crypto)
if(APPLE)
set(LIBRARIES ${LIBRARIES} "-framework IOKit -framework Foundation")
else()
set(LIBRARIES ${LIBRARIES} atomic)
endif()
if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "Darwin" AND NOT WIN32)
set(LIBRARIES ${LIBRARIES} unwind)
endif()
if (WIN32)
set(LIBRARIES ${LIBRARIES}
wsock32
ntdll
ws2_32
Iphlpapi)
else()
set(LIBRARIES ${LIBRARIES} dl)
endif()
main.cpp)
find_package(HIDAPI)
set(LIBRARIES ${LIBRARIES} ${HIDAPI_LIBRARIES})
add_subdirectory(src/)
target_link_libraries(${PROJECT_NAME}
PRIVATE ${LIBRARIES})
PRIVATE myxrmcore)
if (BUILD_XMREGCORE_TESTS)
enable_testing()
@ -121,3 +31,4 @@ if (BUILD_XMREGCORE_TESTS)
add_subdirectory(tests)
endif()

@ -33,6 +33,25 @@
# blockchain_db;ringct;wallet;cncrypto;easylogging;version;checkpoints;
# ringct_basic)
if (NOT MONERO_DIR)
set(MONERO_DIR ~/monero)
endif()
message(STATUS MONERO_DIR ": ${MONERO_DIR}")
set(MONERO_SOURCE_DIR ${MONERO_DIR}
CACHE PATH "Path to the root directory for Monero")
# set location of monero build tree
set(MONERO_BUILD_DIR ${MONERO_SOURCE_DIR}/build/release/
CACHE PATH "Path to the build directory for Monero")
set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} "${MONERO_BUILD_DIR}"
CACHE PATH "Add Monero directory for library searching")
set(LIBS cryptonote_core
blockchain_db
cryptonote_protocol
@ -79,10 +98,10 @@ foreach (l ${LIBS})
message(STATUS FindMonero " Xmr_${L}_LIBRARIES ${Xmr_${L}_LIBRARY}")
add_library(${l} STATIC IMPORTED GLOBAL)
add_library(${l} STATIC IMPORTED)
set_property(TARGET ${l} PROPERTY IMPORTED_LOCATION ${Xmr_${L}_LIBRARIES})
set(Monero_LIBRARIES ${Monero_LIBRARIES} ${l} CACHE INTERNAL "Monero LIBRARIES")
set(Monero_LIBRARIES ${Monero_LIBRARIES} ${l} CACHE INTERNAL "Monero LIBRARIES")
endforeach()
@ -91,15 +110,29 @@ message("FOUND Monero_LIBRARIES: ${Monero_LIBRARIES}")
message(STATUS ${MONERO_SOURCE_DIR}/build)
macro(target_include_monero_directories target_name)
#macro(target_include_monero_directories target_name)
#target_include_directories(${target_name}
#PRIVATE
#${MONERO_SOURCE_DIR}/src
#${MONERO_SOURCE_DIR}/external
#${MONERO_SOURCE_DIR}/build
#${MONERO_SOURCE_DIR}/external/easylogging++
#${MONERO_SOURCE_DIR}/contrib/epee/include
#${MONERO_SOURCE_DIR}/external/db_drivers/liblmdb)
#endmacro(target_include_monero_directories)
add_library(Monero::Monero INTERFACE IMPORTED GLOBAL)
target_include_directories(${target_name}
PRIVATE
${MONERO_SOURCE_DIR}/src
${MONERO_SOURCE_DIR}/external
${MONERO_SOURCE_DIR}/build
${MONERO_SOURCE_DIR}/external/easylogging++
${MONERO_SOURCE_DIR}/contrib/epee/include
${MONERO_SOURCE_DIR}/external/db_drivers/liblmdb)
target_include_directories(Monero::Monero INTERFACE
${MONERO_SOURCE_DIR}/src
${MONERO_SOURCE_DIR}/external
${MONERO_SOURCE_DIR}/build
${MONERO_SOURCE_DIR}/external/easylogging++
${MONERO_SOURCE_DIR}/contrib/epee/include
${MONERO_SOURCE_DIR}/external/db_drivers/liblmdb)
endmacro(target_include_monero_directories)
target_link_libraries(Monero::Monero INTERFACE
${Monero_LIBRARIES})

@ -12,6 +12,34 @@ set(SOURCE_FILES
Account.h
Account.cpp)
# find boost
find_package(Boost COMPONENTS
system
filesystem
thread
date_time
chrono
regex
serialization
program_options
REQUIRED)
find_package(HIDAPI)
set(LIBRARIES
Monero::Monero
${Boost_LIBRARIES}
${HIDAPI_LIBRARIES}
sodium
pthread
unbound
curl
ssl
crypto
dl
atomic
unwind)
# make static library called libmyxrm
# that we are going to link to
# in the root CMakeLists.txt file
@ -19,5 +47,7 @@ add_library(myxrmcore
STATIC
${SOURCE_FILES})
# include monero headers
target_include_monero_directories(myxrmcore)
target_link_libraries(myxrmcore
PUBLIC ${LIBRARIES})

@ -5,10 +5,9 @@ macro(add_test_target _TEST_NAME)
${_TEST_NAME}_tests.cpp
JsonTx.cpp)
target_include_monero_directories(${_TEST_NAME}_tests)
target_link_libraries(${_TEST_NAME}_tests
PRIVATE
myxrmcore
gtest gtest_main
gmock gmock_main
${LIBRARIES})
@ -17,24 +16,9 @@ macro(add_test_target _TEST_NAME)
endmacro()
macro(add_cov_target _TEST_NAME)
SETUP_TARGET_FOR_COVERAGE_GCOVR_HTML(
NAME ${_TEST_NAME}_cov
EXECUTABLE ${_TEST_NAME}_tests
DEPENDENCIES ${_TEST_NAME}_tests)
endmacro()
resource_dir("res")
add_test_target(universalidentifier)
add_test_target(account)
add_test_target(tools)
add_cov_target(universalidentifier)
add_cov_target(account)
add_cov_target(tools)

Loading…
Cancel
Save