initial commit
This commit is contained in:
		
							
								
								
									
										80
									
								
								cmake/Binaries.cmake
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										80
									
								
								cmake/Binaries.cmake
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,80 @@
 | 
			
		||||
include(GenerateExportHeader)
 | 
			
		||||
 | 
			
		||||
link_directories(${CMAKE_CURRENT_BINARY_DIR})
 | 
			
		||||
set(BUILD_SHARED_LIBS ON)
 | 
			
		||||
if (MSVC)
 | 
			
		||||
    add_compile_options("/utf-8")
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
function(build_library)
 | 
			
		||||
    set(multiValueArgs SUBDIRS DEPENDS LIBRARIES)
 | 
			
		||||
    set(oneValueArgs TARGET)
 | 
			
		||||
    cmake_parse_arguments(build_library "" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
 | 
			
		||||
 | 
			
		||||
    set(target ${build_library_TARGET})
 | 
			
		||||
    set(targetsources)
 | 
			
		||||
    foreach(subdir ${build_library_SUBDIRS})
 | 
			
		||||
        set(found_files)
 | 
			
		||||
        file(GLOB_RECURSE found_files RELATIVE "${CMAKE_SOURCE_DIR}" "${CMAKE_SOURCE_DIR}/src/${subdir}/*.cpp")
 | 
			
		||||
        set(targetsources ${targetsources} ${found_files})
 | 
			
		||||
    endforeach()
 | 
			
		||||
    
 | 
			
		||||
    if (MSVC AND EXISTS "${CMAKE_SOURCE_DIR}/res/${target}.rc")
 | 
			
		||||
        set(targetsources ${targetsources} "res/${target}.rc")
 | 
			
		||||
    endif()
 | 
			
		||||
 | 
			
		||||
    add_library(${target} SHARED ${targetsources})
 | 
			
		||||
    if (MSVC)
 | 
			
		||||
        set_target_properties(${target} PROPERTIES PREFIX "")
 | 
			
		||||
        set_target_properties(${target} PROPERTIES LINK_FLAGS "/MAP")
 | 
			
		||||
        GENERATE_EXPORT_HEADER(${target}
 | 
			
		||||
                               BASE_NAME ${target}
 | 
			
		||||
                               EXPORT_MACRO_NAME ${target}_EXPORT
 | 
			
		||||
                               EXPORT_FILE_NAME include/${target}_Export.h
 | 
			
		||||
                               STATIC_DEFINE ${target}_BUILT_AS_STATIC)
 | 
			
		||||
    endif()
 | 
			
		||||
    
 | 
			
		||||
    if (build_library_LIBRARIES)
 | 
			
		||||
        foreach (library ${build_library_LIBRARIES})
 | 
			
		||||
            target_link_libraries(${target} ${library})
 | 
			
		||||
        endforeach()
 | 
			
		||||
    endif()
 | 
			
		||||
 | 
			
		||||
    if (build_library_DEPENDS)
 | 
			
		||||
        add_dependencies(${target} ${build_library_DEPENDS})
 | 
			
		||||
    endif()
 | 
			
		||||
endfunction()
 | 
			
		||||
 | 
			
		||||
function(build_executable)
 | 
			
		||||
    set(multiValueArgs SUBDIRS DEPENDS LIBRARIES)
 | 
			
		||||
    set(oneValueArgs TARGET)
 | 
			
		||||
    cmake_parse_arguments(build_executable "" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
 | 
			
		||||
 | 
			
		||||
    set(target ${build_executable_TARGET})
 | 
			
		||||
    set(targetsources)
 | 
			
		||||
    foreach(subdir ${build_executable_SUBDIRS})
 | 
			
		||||
        set(found_files)
 | 
			
		||||
        file(GLOB_RECURSE found_files RELATIVE "${CMAKE_SOURCE_DIR}" "${CMAKE_SOURCE_DIR}/src/${subdir}/*.cpp")
 | 
			
		||||
        set(targetsources ${targetsources} ${found_files})
 | 
			
		||||
    endforeach()
 | 
			
		||||
 | 
			
		||||
    if (MSVC AND EXISTS "${CMAKE_SOURCE_DIR}/res/${target}.rc")
 | 
			
		||||
        set(targetsources ${targetsources} "res/${target}.rc")
 | 
			
		||||
    endif()
 | 
			
		||||
 | 
			
		||||
    add_executable(${target} ${targetsources})
 | 
			
		||||
    if (MSVC)
 | 
			
		||||
        # tells MSVC to use int main() but still hide the console window
 | 
			
		||||
        set_target_properties(${target} PROPERTIES LINK_FLAGS "/SUBSYSTEM:windows /ENTRY:mainCRTStartup")
 | 
			
		||||
    endif()
 | 
			
		||||
    
 | 
			
		||||
    if (build_executable_LIBRARIES)
 | 
			
		||||
        foreach (library ${build_executable_LIBRARIES})
 | 
			
		||||
            target_link_libraries(${target} ${library})
 | 
			
		||||
        endforeach()
 | 
			
		||||
    endif()
 | 
			
		||||
 | 
			
		||||
    if (build_executable_DEPENDS)
 | 
			
		||||
        add_dependencies(${target} ${build_executable_DEPENDS})
 | 
			
		||||
    endif()
 | 
			
		||||
endfunction()
 | 
			
		||||
							
								
								
									
										24
									
								
								cmake/Colours.cmake
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								cmake/Colours.cmake
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,24 @@
 | 
			
		||||
# basically an assembled version of https://stackoverflow.com/questions/18968979/how-to-get-colorized-output-with-cmake
 | 
			
		||||
# spelled with a u because the guy in the answer seemed to insist on it
 | 
			
		||||
 | 
			
		||||
if(NOT MSVC)
 | 
			
		||||
    string(ASCII 27 Esc)
 | 
			
		||||
    set(ColourReset "${Esc}[0m")
 | 
			
		||||
    set(ColourBold  "${Esc}[1m")
 | 
			
		||||
    set(Red         "${Esc}[0;31m")
 | 
			
		||||
    set(Green       "${Esc}[0;32m")
 | 
			
		||||
    set(Yellow      "${Esc}[0;33m")
 | 
			
		||||
    set(Blue        "${Esc}[0;34m")
 | 
			
		||||
    set(Magenta     "${Esc}[0;35m")
 | 
			
		||||
    set(Cyan        "${Esc}[0;36m")
 | 
			
		||||
    set(White       "${Esc}[0;37m")
 | 
			
		||||
    set(BoldRed     "${Esc}[1;31m")
 | 
			
		||||
    set(BoldGreen   "${Esc}[1;32m")
 | 
			
		||||
    set(BoldYellow  "${Esc}[1;33m")
 | 
			
		||||
    set(BoldBlue    "${Esc}[1;34m")
 | 
			
		||||
    set(BoldMagenta "${Esc}[1;35m")
 | 
			
		||||
    set(BoldCyan    "${Esc}[1;36m")
 | 
			
		||||
    set(BoldWhite   "${Esc}[1;37m")
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										37
									
								
								cmake/Qt.cmake
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								cmake/Qt.cmake
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,37 @@
 | 
			
		||||
set(QT_VERSION_STR "5.15.2")
 | 
			
		||||
set(CMAKE_PREFIX_PATH "C:\\Qt\\${QT_VERSION_STR}\\msvc2019_64")
 | 
			
		||||
find_package(Qt5 COMPONENTS Core Widgets REQUIRED)
 | 
			
		||||
set(QT_UIC_EXECUTABLE "C:\\Qt\\${QT_VERSION_STR}\\msvc2019_64\\bin\\uic.exe")
 | 
			
		||||
 | 
			
		||||
file(STRINGS "${CMAKE_SOURCE_DIR}/res/moc.txt" mocfiles)
 | 
			
		||||
 | 
			
		||||
set(mocdeps)
 | 
			
		||||
 | 
			
		||||
foreach(moctgt ${mocfiles})
 | 
			
		||||
    string(REPLACE "include/" "include/moc/" outfile ${moctgt})
 | 
			
		||||
    add_custom_command(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${outfile}"
 | 
			
		||||
                       COMMAND moc ${CMAKE_SOURCE_DIR}/${moctgt} -o ${CMAKE_CURRENT_BINARY_DIR}/${outfile}
 | 
			
		||||
                       COMMENT "Running moc for ${outfile}..."
 | 
			
		||||
                       DEPENDS "${CMAKE_SOURCE_DIR}/${moctgt}")
 | 
			
		||||
    set (mocdeps ${mocdeps} ${outfile})
 | 
			
		||||
endforeach()
 | 
			
		||||
 | 
			
		||||
file(GLOB_RECURSE uilist RELATIVE "${CMAKE_SOURCE_DIR}" "${CMAKE_SOURCE_DIR}/res/ui/*.ui")
 | 
			
		||||
set(uicsources)
 | 
			
		||||
foreach(uifile ${uilist})
 | 
			
		||||
    string(REGEX REPLACE "res/ui/" "" uiname ${uifile})
 | 
			
		||||
    string(REGEX REPLACE ".ui\$" "" uiname ${uiname})
 | 
			
		||||
    string(REGEX REPLACE "/" "_" uiname ${uiname})
 | 
			
		||||
    # res/ui/dlg/license.ui should result in ${uiname} being "dlg_license" at this point
 | 
			
		||||
    
 | 
			
		||||
    set(headerfile "${CMAKE_CURRENT_BINARY_DIR}/include/ui_${uiname}.h")
 | 
			
		||||
 | 
			
		||||
    add_custom_command(OUTPUT "${headerfile}" PRE_BUILD
 | 
			
		||||
            COMMAND ${QT_UIC_EXECUTABLE} -o "${headerfile}" "${CMAKE_SOURCE_DIR}/${uifile}"
 | 
			
		||||
            DEPENDS "${CMAKE_SOURCE_DIR}/${uifile}"
 | 
			
		||||
            COMMENT "Qt UIC: ${BoldCyan}${uifile}${ColourReset}")
 | 
			
		||||
 | 
			
		||||
    set(uicsources ${uicsources} "${headerfile}")
 | 
			
		||||
endforeach()
 | 
			
		||||
 | 
			
		||||
add_custom_target(qtgenerated DEPENDS ${mocdeps} ${uicsources})
 | 
			
		||||
		Reference in New Issue
	
	Block a user