* Adds basic qurl support * allows building with custom qt installation using the env variable * cleans up * cleanup
80 lines
2.8 KiB
CMake
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)
|