Created
June 5, 2019 00:46
-
-
Save sanderfoobar/07cfccf67cf0cb85ae91c9b0cd7e8f38 to your computer and use it in GitHub Desktop.
CMake recipe monero GUI
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
cmake_minimum_required(VERSION 3.10) | |
project(monero-gui C CXX) | |
message(STATUS "Initiating compile using CMake ${CMAKE_VERSION}") | |
set(STATIC OFF) | |
set(DEBUG ON) | |
set(CMAKE_BUILD_TYPE Debug) | |
# GUI | |
set(VERSION_MAJOR "14") | |
set(VERSION_MINOR "0") | |
set(VERSION_REVISION "3") | |
set(VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_REVISION}") | |
set(USE_DEVICE_TREZOR OFF) | |
option(USE_DEVICE_TREZOR "Disable zxcvbn" OFF) | |
option(DISABLE_PASS_STRENGTH_METER "Disable zxcvbn" ON) | |
#option(WITH_SCANNER "Enable webcam QR scanner" OFF) | |
list(INSERT CMAKE_MODULE_PATH 0 "${CMAKE_SOURCE_DIR}/cmake") | |
set(CMAKE_CXX_FLAGS "-fPIC") | |
set(CMAKE_CXX_STANDARD 11) | |
set(CMAKE_INCLUDE_CURRENT_DIR ON) | |
set(CMAKE_AUTOMOC ON) | |
set(CMAKE_AUTORCC ON) | |
set(CMAKE_AUTOUIC ON) | |
if(DEBUG) | |
set(CMAKE_VERBOSE_MAKEFILE ON) | |
endif() | |
set(CMAKE_PREFIX_PATH $ENV{HOME}/Qt5.9/5.9.7/gcc_64) | |
if(STATIC) | |
message(STATUS "Initiating static build") | |
set(Boost_USE_STATIC_LIBS ON) | |
set(CMAKE_FIND_LIBRARY_SUFFIXES ".a" ".so") | |
endif() | |
# Compile source files (.h/.cpp) | |
file(GLOB SOURCE_FILES | |
"*.h" | |
"*.cpp" | |
"src/*.h" | |
"src/libwalletqt/WalletManager.cpp" | |
"src/libwalletqt/Wallet.cpp" | |
"src/libwalletqt/PendingTransaction.cpp" | |
"src/libwalletqt/TransactionHistory.cpp" | |
"src/libwalletqt/TransactionInfo.cpp" | |
"src/libwalletqt/QRCodeImageProvider.cpp" QR | |
"src/QR-Code-generator/BitBuffer.cpp" | |
"src/QR-Code-generator/QrCode.cpp" | |
"src/QR-Code-generator/QrSegment.cpp" | |
"src/libwalletqt/AddressBook.cpp" | |
"src/libwalletqt/Subaddress.cpp" | |
"src/libwalletqt/SubaddressAccount.cpp" | |
"src/libwalletqt/UnsignedTransaction.cpp" | |
"src/libwalletqt/WalletManager.h" | |
"src/libwalletqt/Wallet.h" | |
"src/libwalletqt/PendingTransaction.h" | |
"src/libwalletqt/TransactionHistory.h" | |
"src/libwalletqt/TransactionInfo.h" | |
"src/libwalletqt/QRCodeImageProvider.h" | |
"src/QR-Code-generator/BitBuffer.h" | |
"src/QR-Code-generator/QrCode.h" | |
"src/QR-Code-generator/QrSegment.h" | |
"src/libwalletqt/Transfer.h" | |
"src/libwalletqt/AddressBook.h" | |
"src/libwalletqt/Subaddress.h" | |
"src/libwalletqt/SubaddressAccount.h" | |
"src/libwalletqt/UnsignedTransaction.h" | |
"src/daemon/*.h" | |
"src/daemon/*.cpp" | |
"src/model/*.h" | |
"src/model/*.cpp" | |
# "src/QR-Code-generator/*.h" | |
# "src/QR-Code-generator/*.cpp" | |
# "src/QR-Code-scanner/*.h" | |
# "src/QR-Code-scanner/*.cpp" | |
"src/qt/*.h" | |
"src/qt/*.cpp" | |
) | |
# Include password strength library | |
add_definitions(-DDISABLE_PASS_STRENGTH_METER) | |
#if(DISABLE_PASS_STRENGTH_METER) | |
# add_definitions(-DDISABLE_PASS_STRENGTH_METER) | |
#else() | |
# message(STATUS "1111") | |
# list(APPEND SOURCE_FILES | |
# "src/zxcvbn-c/*.h" | |
# "src/zxcvbn-c/*.cpp" | |
# ) | |
#endif() | |
include(CheckTrezor) # Trezor support check | |
include(CMakePackageConfigHelpers) | |
# QT5 | |
#set(RESOURCES | |
# "resources/images.qrc" | |
# ) | |
find_package(Qt5Core REQUIRED) | |
find_package(Qt5Quick REQUIRED) | |
find_package(Qt5Widgets REQUIRED) | |
find_package(Qt5Gui REQUIRED) | |
find_package(Qt5Network REQUIRED) | |
find_package(Qt5Qml REQUIRED) | |
find_package(Qt5Multimedia REQUIRED) | |
find_package(Qt5Xml REQUIRED) | |
find_package(Qt5XmlPatterns REQUIRED) | |
find_package(Qt5Svg REQUIRED) | |
set(RESOURCES qml.qrc) | |
qt5_add_resources(QML_QRC ${RESOURCES}) | |
add_executable(monero-gui main.cpp | |
${SOURCE_FILES} | |
${QML_QRC} | |
) | |
target_include_directories(monero-gui PUBLIC ${Qt5Gui_PRIVATE_INCLUDE_DIRS}) | |
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${Qt5Widgets_EXECUTABLE_COMPILE_FLAGS}") | |
# OpenGL | |
set(OpenGL_GL_PREFERENCE GLVND) | |
find_package(OpenGL REQUIRED) | |
target_include_directories(monero-gui PUBLIC ${OPENGL_INCLUDE_DIR}) | |
message(STATUS "OpenGL: include dir at ${OPENGL_INCLUDE_DIR}") | |
message(STATUS "OpenGL: libraries at ${OPENGL_LIBRARIES}") | |
# OpenSSL | |
find_package(OpenSSL REQUIRED) | |
target_include_directories(monero-gui PUBLIC ${OPENSSL_INCLUDE_DIR}) | |
message(STATUS "OpenSSL: Version ${OPENSSL_VERSION}") | |
message(STATUS "OpenSSL: include dir at ${OPENSSL_INCLUDE_DIR}") | |
message(STATUS "OpenSSL: libraries at ${OPENSSL_LIBRARIES} ${OPENSSL_SSL_LIBRARIES}") | |
# Zbar (for QR scanner) | |
#find_package(ZBar0) | |
#target_include_directories(monero-gui PUBLIC ${ZBAR_INCLUDE_DIR}) | |
#message(STATUS "libzbar: include dir at ${ZBAR_INCLUDE_DIR}") | |
#message(STATUS "libzbar: libraries at ${ZBAR_LIBRARIES}") | |
# Unwind | |
find_package(Libunwind) | |
target_include_directories(monero-gui PUBLIC ${LIBUNWIND_INCLUDE_DIR}) | |
message(STATUS "libunwind: include dir at ${LIBUNWIND_INCLUDE_DIR}") | |
message(STATUS "libunwind: libraries at ${LIBUNWIND_LIBRARIES}") | |
# Sodium | |
if(STATIC) | |
set(sodium_USE_STATIC_LIBS ON) | |
endif() | |
find_package(Sodium REQUIRED) | |
target_include_directories(monero-gui PUBLIC ${sodium_INCLUDE_DIR}) | |
message(STATUS "libsodium: include dir at ${sodium_INCLUDE_DIR}") | |
message(STATUS "libsodium: libraries at ${sodium_LIBRARY_DEBUG}") | |
if(sodium_VERSION) | |
message(STATUS "libsodium: Version ${sodium_VERSION}") | |
endif() | |
# LibUSB | |
find_package(LibUSB) | |
target_include_directories(monero-gui PUBLIC ${LibUSB_INCLUDE_DIRS}) | |
message(STATUS "libusb: include dir at ${LibUSB_INCLUDE_DIRS}") | |
message(STATUS "libusb: libraries at ${LibUSB_LIBRARIES}") | |
# HIDApi | |
find_package(HIDAPI REQUIRED) | |
target_include_directories(monero-gui PUBLIC ${HIDAPI_INCLUDE_DIRS}) | |
message(STATUS "libhidapi: include dir at ${HIDAPI_INCLUDE_DIRS}") | |
message(STATUS "libhidapi: libraries at ${HIDAPI_LIBRARIES}") | |
# Boost | |
#if(DEBUG) | |
# set(Boost_DEBUG ON) | |
#endif() | |
find_package(Boost 1.62 REQUIRED COMPONENTS | |
system | |
filesystem | |
thread | |
date_time | |
chrono | |
regex | |
serialization | |
program_options | |
locale) | |
target_include_directories(monero-gui PUBLIC ${Boost_INCLUDE_DIRS}) | |
message(STATUS "Using Boost include dir at ${Boost_INCLUDE_DIRS}") | |
message(STATUS "Using Boost libraries at ${Boost_LIBRARIES}") | |
target_include_directories(monero-gui PUBLIC | |
${CMAKE_CURRENT_SOURCE_DIR}/monero/include | |
${CMAKE_CURRENT_SOURCE_DIR}/monero/src | |
${CMAKE_CURRENT_SOURCE_DIR}/src | |
${CMAKE_CURRENT_SOURCE_DIR}/src/daemon | |
${CMAKE_CURRENT_SOURCE_DIR}/src/libwalletqt | |
${CMAKE_CURRENT_SOURCE_DIR}/src/model | |
${CMAKE_CURRENT_SOURCE_DIR}/src/QR-Code-generator | |
#${CMAKE_CURRENT_SOURCE_DIR}/src/QR-Code-scanner | |
${CMAKE_CURRENT_SOURCE_DIR}/src/daemon/zxcvbn-c | |
"/usr/include/libusb-1.0/" # REMOVEME | |
) | |
target_compile_definitions(monero-gui | |
PUBLIC | |
${Qt5Widgets_DEFINITIONS} | |
${Qt5Qml_DEFINITIONS} | |
) | |
set(CMAKE_CXX_FLAGS "${Qt5Widgets_EXECUTABLE_COMPILE_FLAGS}") | |
set(CMAKE_CXX_FLAGS "-std=c++0x") | |
target_link_libraries(monero-gui | |
${CMAKE_SOURCE_DIR}/monero/lib/libwallet_merged.a | |
#${ZBAR_LIBRARIES} QR | |
${CMAKE_SOURCE_DIR}/monero/lib/libunbound.a | |
${sodium_LIBRARY_RELEASE} | |
${CMAKE_SOURCE_DIR}/monero/lib/liblmdb.a | |
${CMAKE_SOURCE_DIR}/monero/lib/libepee.a | |
${CMAKE_SOURCE_DIR}/monero/lib/libepee_readline.a | |
${CMAKE_SOURCE_DIR}/monero/lib/libeasylogging.a | |
${CMAKE_DL_LIBS} | |
${Boost_LIBRARIES} | |
${OPENSSL_LIBRARIES} | |
${OPENSSL_SSL_LIBRARIES} | |
${LibUSB_LIBRARIES} | |
${HIDAPI_LIBRARIES} | |
pthread | |
Qt5::Core | |
Qt5::Quick | |
Qt5::Widgets | |
Qt5::Gui | |
Qt5::Network | |
Qt5::Qml | |
Qt5::Multimedia | |
Qt5::Xml | |
Qt5::XmlPatterns | |
Qt5::Svg | |
) | |
install(TARGETS monero-gui | |
DESTINATION ${CMAKE_INSTALL_PREFIX} | |
) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment