CMakeLists.txt

changeset 1
d38df7b58026
child 2
a1e435907f3a
equal deleted inserted replaced
0:4b23237af1d9 1:d38df7b58026
1 # CMakeLists.txt is part of bmsapp
2 #
3
4 PROJECT(bmsapp)
5 CMAKE_MINIMUM_REQUIRED( VERSION 3.6 )
6 SET(bmsapp_EXECUTABLE "bmsapp")
7 MESSAGE( STATUS "Building bmsapp" )
8
9 # Version
10
11 SET( bmsapp_VERSION_MAJOR 0 )
12 SET( bmsapp_VERSION_MINOR 1 )
13 SET( bmsapp_VERSION_PATCH 0 )
14
15 # Compile flags
16
17 # Automatically run moc on source files when necessary
18 set(CMAKE_AUTOMOC ON)
19
20 SET( CMAKE_CXX_FLAGS_RELEASE "-Wall -ansi -pedantic -Wno-long-long -O2 -pipe" )
21 SET( CMAKE_CXX_FLAGS_DEBUG "-Wall -g3 -pipe" )
22
23 #====================================================Set build type=====================================================
24 # We might always to tell the compiler to include debugging information (eg via the -g option on gcc). It makes the
25 # binaries slightly bigger on Linux, but helps greatly in analysing core dumps etc. (In closed-source projects people
26 # sometimes turn it off for release builds to make it harder to reverse engineer the software, but obviously that's not
27 # an issue for us.)
28 #
29 # However, setting CMAKE_BUILD_TYPE to "Debug", also changes other things, such as the default location for config
30 # files, which we don't want on a release build, so we would probably need to set compiler flags directly.
31 #
32 # .:TBD:. Investigate whether setting CMAKE_BUILD_TYPE to "RelWithDebInfo" does what we want.
33 #
34 #IF( ${DO_RELEASE_BUILD} )
35 # SET(CMAKE_BUILD_TYPE "Release")
36 #ELSE()
37 # SET(CMAKE_BUILD_TYPE "Debug")
38 #ENDIF()
39
40 #============================Directories=======================================
41
42 SET(ROOTDIR "${CMAKE_CURRENT_SOURCE_DIR}")
43 SET(SRCDIR "${ROOTDIR}/src")
44 #SET(UIDIR "${ROOTDIR}/ui")
45 #SET(DATADIR "${ROOTDIR}/data")
46 #SET(TRANSLATIONSDIR "${ROOTDIR}/translations")
47
48 INCLUDE_DIRECTORIES(${SRCDIR})
49 INCLUDE_DIRECTORIES("${CMAKE_BINARY_DIR}/src") # In case of out-of-source build.
50
51 #==================================Find Qt5====================================
52
53 find_package(Qt5 REQUIRED COMPONENTS Core Widgets)
54
55 # Network PrintSupport Sql Xml LinguistTools
56
57 # Some extra files for the "make clean" target.
58 SET_PROPERTY(
59 DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
60 PROPERTY ADDITIONAL_MAKE_CLEAN_FILES
61 cmake_install.cmake
62 compile_commands.json
63 CMakeCache.txt
64 )
65
66 #==============================Setup the config.h==============================
67
68 # Tell cmake where the configure file is and where
69 # to put the output. All variables in config.in written as "${VAR}$
70 # will be replaced by VAR as determined by cmake in config.h.
71 # Outputs only in the build directory.
72 CONFIGURE_FILE( src/config.in src/config.h )
73
74 # ===== Process other CMakeList.txt's =====
75
76 set( SOURCE_FILES
77 ${SRCDIR}/main.cpp
78 )
79
80 # ===== Build the application =====
81
82 add_executable(${bmsapp_EXECUTABLE} ${SOURCE_FILES})
83 target_link_libraries(${bmsapp_EXECUTABLE} Qt5::Core Qt5::Widgets)
84

mercurial