nodeguy/config/qt.cmake
Atul R 22c7acd74e
Methods and exports needed for Webview support (#217)
* Adds basic qurl support

* allows building with custom qt installation using the env variable

* cleans up

* cleanup
2019-11-24 23:05:53 +01:00

80 lines
2.8 KiB
CMake

# Adds Qt support
# make sure you include this at the top of whichever Cmakelist file you are going to use.
# Need for automatic moc. Moc executable path is set in qt.cmake
set(CMAKE_AUTOMOC ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(QT_VERSION_MAJOR 5)
set(QT_VERSION_MINOR 13)
add_executable(Qt5::moc IMPORTED)
function(AddQtSupport addonName)
execute_process(COMMAND node -p "require('@nodegui/qode').qtHome"
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE QT_HOME_DIR
)
if(DEFINED ENV{QT_INSTALL_DIR})
# Allows to use custom Qt installation via QT_INSTALL_DIR env variable
message(STATUS "Using Custom QT installation for ${addonName} QT_INSTALL_DIR:$ENV{QT_INSTALL_DIR}")
set(QT_HOME_DIR "$ENV{QT_INSTALL_DIR}")
endif()
string(REPLACE "\n" "" QT_HOME_DIR "${QT_HOME_DIR}")
string(REPLACE "\"" "" QT_HOME_DIR "${QT_HOME_DIR}")
if(APPLE)
set(CUSTOM_QT_MOC_PATH "${QT_HOME_DIR}/bin/moc")
target_include_directories(${addonName} PRIVATE
"${QT_HOME_DIR}/include"
"${QT_HOME_DIR}/lib/QtCore.framework/Versions/5/Headers"
"${QT_HOME_DIR}/lib/QtGui.framework/Versions/5/Headers"
"${QT_HOME_DIR}/lib/QtWidgets.framework/Versions/5/Headers"
)
target_link_libraries(${addonName} PRIVATE
"${QT_HOME_DIR}/lib/QtCore.framework/Versions/5/QtCore"
"${QT_HOME_DIR}/lib/QtGui.framework/Versions/5/QtGui"
"${QT_HOME_DIR}/lib/QtWidgets.framework/Versions/5/QtWidgets"
)
endif()
if (WIN32)
set(CUSTOM_QT_MOC_PATH "${QT_HOME_DIR}\\bin\\moc.exe")
target_include_directories(${addonName} PRIVATE
"${QT_HOME_DIR}\\include"
"${QT_HOME_DIR}\\include\\QtCore"
"${QT_HOME_DIR}\\include\\QtGui"
"${QT_HOME_DIR}\\include\\QtWidgets"
)
target_link_libraries(${addonName} PRIVATE
"${QT_HOME_DIR}\\lib\\Qt5Core.lib"
"${QT_HOME_DIR}\\lib\\Qt5Gui.lib"
"${QT_HOME_DIR}\\lib\\Qt5Widgets.lib"
)
endif()
if(UNIX AND NOT APPLE)
set(LINUX TRUE)
endif()
if(LINUX)
set(CUSTOM_QT_MOC_PATH "${QT_HOME_DIR}/bin/moc")
target_include_directories(${addonName} PRIVATE
"${QT_HOME_DIR}/include"
"${QT_HOME_DIR}/include/QtCore"
"${QT_HOME_DIR}/include/QtGui"
"${QT_HOME_DIR}/include/QtWidgets"
)
target_link_libraries(${addonName} PRIVATE
"${QT_HOME_DIR}/lib/libQt5Core.so"
"${QT_HOME_DIR}/lib/libQt5Gui.so"
"${QT_HOME_DIR}/lib/libQt5Widgets.so"
)
endif()
# set custom moc executable location
set_target_properties(Qt5::moc PROPERTIES IMPORTED_LOCATION "${CUSTOM_QT_MOC_PATH}")
endfunction(AddQtSupport addonName)