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 set(PROJECT_NAME xmregcore)
xmregcore)
project(${PROJECT_NAME}) project(${PROJECT_NAME})
set(CMAKE_CXX_STANDARD 14) set(CMAKE_CXX_STANDARD 14)
set(CXX_STANDARD_REQUIRED ON) set(CXX_STANDARD_REQUIRED ON)
if (NOT MONERO_DIR) list(APPEND CMAKE_MODULE_PATH
set(MONERO_DIR ~/monero) "${CMAKE_CURRENT_LIST_DIR}/cmake")
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")
# set location of monero build tree option(BUILD_XMREGCORE_TESTS
set(MONERO_BUILD_DIR ${MONERO_SOURCE_DIR}/build/release/ "Build tests for the project" ON)
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")
include(MyUtils) 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_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} add_executable(${PROJECT_NAME}
${SOURCE_FILES}) main.cpp)
# 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()
find_package(HIDAPI) add_subdirectory(src/)
set(LIBRARIES ${LIBRARIES} ${HIDAPI_LIBRARIES})
target_link_libraries(${PROJECT_NAME} target_link_libraries(${PROJECT_NAME}
PRIVATE ${LIBRARIES}) PRIVATE myxrmcore)
if (BUILD_XMREGCORE_TESTS) if (BUILD_XMREGCORE_TESTS)
enable_testing() enable_testing()
@ -121,3 +31,4 @@ if (BUILD_XMREGCORE_TESTS)
add_subdirectory(tests) add_subdirectory(tests)
endif() endif()

@ -33,6 +33,25 @@
# blockchain_db;ringct;wallet;cncrypto;easylogging;version;checkpoints; # blockchain_db;ringct;wallet;cncrypto;easylogging;version;checkpoints;
# ringct_basic) # 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 set(LIBS cryptonote_core
blockchain_db blockchain_db
cryptonote_protocol cryptonote_protocol
@ -79,10 +98,10 @@ foreach (l ${LIBS})
message(STATUS FindMonero " Xmr_${L}_LIBRARIES ${Xmr_${L}_LIBRARY}") 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_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() endforeach()
@ -91,15 +110,29 @@ message("FOUND Monero_LIBRARIES: ${Monero_LIBRARIES}")
message(STATUS ${MONERO_SOURCE_DIR}/build) 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} target_include_directories(Monero::Monero INTERFACE
PRIVATE ${MONERO_SOURCE_DIR}/src
${MONERO_SOURCE_DIR}/src ${MONERO_SOURCE_DIR}/external
${MONERO_SOURCE_DIR}/external ${MONERO_SOURCE_DIR}/build
${MONERO_SOURCE_DIR}/build ${MONERO_SOURCE_DIR}/external/easylogging++
${MONERO_SOURCE_DIR}/external/easylogging++ ${MONERO_SOURCE_DIR}/contrib/epee/include
${MONERO_SOURCE_DIR}/contrib/epee/include ${MONERO_SOURCE_DIR}/external/db_drivers/liblmdb)
${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.h
Account.cpp) 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 # make static library called libmyxrm
# that we are going to link to # that we are going to link to
# in the root CMakeLists.txt file # in the root CMakeLists.txt file
@ -19,5 +47,7 @@ add_library(myxrmcore
STATIC STATIC
${SOURCE_FILES}) ${SOURCE_FILES})
# include monero headers target_link_libraries(myxrmcore
target_include_monero_directories(myxrmcore) PUBLIC ${LIBRARIES})

@ -5,10 +5,9 @@ macro(add_test_target _TEST_NAME)
${_TEST_NAME}_tests.cpp ${_TEST_NAME}_tests.cpp
JsonTx.cpp) JsonTx.cpp)
target_include_monero_directories(${_TEST_NAME}_tests)
target_link_libraries(${_TEST_NAME}_tests target_link_libraries(${_TEST_NAME}_tests
PRIVATE PRIVATE
myxrmcore
gtest gtest_main gtest gtest_main
gmock gmock_main gmock gmock_main
${LIBRARIES}) ${LIBRARIES})
@ -17,24 +16,9 @@ macro(add_test_target _TEST_NAME)
endmacro() 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") resource_dir("res")
add_test_target(universalidentifier) add_test_target(universalidentifier)
add_test_target(account) add_test_target(account)
add_test_target(tools) add_test_target(tools)
add_cov_target(universalidentifier)
add_cov_target(account)
add_cov_target(tools)

Loading…
Cancel
Save