#############################################################################
##
## https://www.qxorm.com/
## Copyright (C) 2013 XDL Team (ic-east.com)
##
## This file is part of the QxOrm library
##
## This software is provided 'as-is', without any express or implied
## warranty. In no event will the authors be held liable for any
## damages arising from the use of this software
##
## Commercial Usage
## Licensees holding valid commercial QxOrm licenses may use this file in
## accordance with the commercial license agreement provided with the
## Software or, alternatively, in accordance with the terms contained in
## a written agreement between you and XDL Team
##
## GNU General Public License Usage
## Alternatively, this file may be used under the terms of the GNU
## General Public License version 3.0 as published by the Free Software
## Foundation and appearing in the file 'license.gpl3.txt' included in the
## packaging of this file. Please review the following information to
## ensure the GNU General Public License version 3.0 requirements will be
## met : http://www.gnu.org/copyleft/gpl.html
##
## If you are unsure which license is appropriate for your use, or
## if you have questions regarding the use of this file, please contact :
## ic-east.com
##
#############################################################################

cmake_minimum_required(VERSION 3.10)

project(XdlOrm VERSION 1.5.0 LANGUAGES CXX)

# Include Conan generated files
if(EXISTS ${CMAKE_BINARY_DIR}/conan_toolchain.cmake)
   include(${CMAKE_BINARY_DIR}/conan_toolchain.cmake)
endif()

# Include QxOrm library configuration file (should be included by all projects which depend on QxOrm)
include(./XdlOrm.cmake)

set(CMAKE_AUTOMOC ON)
set(CMAKE_INCLUDE_CURRENT_DIR ON)

set(QX_HEADERS
   ./include/QxPrecompiled.h
   ./include/QxMemLeak/bool_array.h
   ./include/QxMemLeak/class_level_lock.h
   ./include/QxMemLeak/cont_ptr_utils.h
   ./include/QxMemLeak/debug_new.h
   ./include/QxMemLeak/fast_mutex.h
   ./include/QxMemLeak/fixed_mem_pool.h
   ./include/QxMemLeak/mem_leak.h
   ./include/QxMemLeak/mem_pool_base.h
   ./include/QxMemLeak/object_level_lock.h
   ./include/QxMemLeak/pctimer.h
   ./include/QxMemLeak/set_assign.h
   ./include/QxMemLeak/static_assert.h
   ./include/QxMemLeak/static_mem_pool.h
   ./include/QxSingleton/IxSingleton.h
   ./include/QxSingleton/QxSingleton.h
   ./include/QxSingleton/QxSingletonX.h
   ./include/QxSingleton/QxSingletonInit.h
   ./include/QxFactory/IxFactory.h
   ./include/QxFactory/QxFactory.h
   ./include/QxFactory/QxFactoryX.h
   ./include/QxCommon/QxConfig.h
   ./include/QxCommon/QxMacro.h
   ./include/QxCommon/QxHashValue.h
   ./include/QxCommon/QxBool.h
   ./include/QxCommon/QxCache.h
   ./include/QxCommon/QxPropertyBag.h
   ./include/QxCommon/QxSimpleCrypt.h
   ./include/QxCommon/QxAnyCastDynamic.h
   ./include/QxCommon/QxException.h
   ./include/QxCommon/QxExceptionCode.h
   ./include/QxCommon/QxAny.h
   ./include/QxConvert/QxConvert.h
   ./include/QxConvert/QxConvert_Impl.h
   ./include/QxConvert/QxConvert_Export.h
   ./include/QxRegister/IxClass.h
   ./include/QxRegister/QxClass.h
   ./include/QxRegister/QxClassX.h
   ./include/QxRegister/QxClassName.h
   ./include/QxRegister/QxRegister.h
   ./include/QxRegister/QxRegisterInternalHelper.h
   ./include/QxRegister/IxTypeInfo.h
   ./include/QxRegister/QxRegisterQtProperty.h
   ./include/QxRegister/QxVersion.h
   ./include/QxCollection/IxCollection.h
   ./include/QxCollection/QxCollection.h
   ./include/QxCollection/QxCollectionIterator.h
   ./include/QxCollection/QxForeach.h
   ./include/QxDataMember/IxDataMember.h
   ./include/QxDataMember/IxDataMemberX.h
   ./include/QxDataMember/QxDataMember.h
   ./include/QxDataMember/QxDataMemberX.h
   ./include/QxDataMember/QxDataMember_QObject.h
   ./include/QxDataMember/QxDataMember_PImpl.h
   ./include/QxDao/IxSqlQueryBuilder.h
   ./include/QxDao/QxSqlQueryBuilder.h
   ./include/QxDao/QxSqlQueryHelper.h
   ./include/QxDao/QxSqlQuery.h
   ./include/QxDao/QxSqlDatabase.h
   ./include/QxDao/IxSqlRelation.h
   ./include/QxDao/QxSqlRelation.h
   ./include/QxDao/QxSqlRelationParams.h
   ./include/QxDao/QxSqlRelation_ManyToMany.h
   ./include/QxDao/QxSqlRelation_ManyToOne.h
   ./include/QxDao/QxSqlRelation_OneToMany.h
   ./include/QxDao/QxSqlRelation_OneToOne.h
   ./include/QxDao/QxSqlRelation_RawData.h
   ./include/QxDao/QxDao.h
   ./include/QxDao/QxDao_Impl.h
   ./include/QxDao/QxDaoStrategy.h
   ./include/QxDao/QxDaoPointer.h
   ./include/QxDao/QxDao_IsDirty.h
   ./include/QxDao/QxSoftDelete.h
   ./include/QxDao/QxSqlError.h
   ./include/QxDao/QxSession.h
   ./include/QxDao/QxDateNeutral.h
   ./include/QxDao/QxTimeNeutral.h
   ./include/QxDao/QxDateTimeNeutral.h
   ./include/QxDao/IxDao_Helper.h
   ./include/QxDao/IxPersistable.h
   ./include/QxDao/IxPersistableCollection.h
   ./include/QxDao/IxPersistableList.h
   ./include/QxDao/QxSqlJoin.h
   ./include/QxDao/QxSqlRelationLinked.h
   ./include/QxDao/QxDaoAsync.h
   ./include/QxDao/QxSqlSaveMode.h
   ./include/QxDao/QxDaoThrowable.h
   ./include/QxDao/QxSqlElement/IxSqlElement.h
   ./include/QxDao/QxSqlElement/QxSqlCompare.h
   ./include/QxDao/QxSqlElement/QxSqlElement.h
   ./include/QxDao/QxSqlElement/QxSqlElementTemp.h
   ./include/QxDao/QxSqlElement/QxSqlEmbedQuery.h
   ./include/QxDao/QxSqlElement/QxSqlExpression.h
   ./include/QxDao/QxSqlElement/QxSqlFreeText.h
   ./include/QxDao/QxSqlElement/QxSqlIn.h
   ./include/QxDao/QxSqlElement/QxSqlIsBetween.h
   ./include/QxDao/QxSqlElement/QxSqlIsNull.h
   ./include/QxDao/QxSqlElement/QxSqlLimit.h
   ./include/QxDao/QxSqlElement/QxSqlSort.h
   ./include/QxDao/QxSqlGenerator/IxSqlGenerator.h
   ./include/QxDao/QxSqlGenerator/QxSqlGenerator.h
   ./include/QxDao/QxSqlGenerator/QxSqlGenerator_MySQL.h
   ./include/QxDao/QxSqlGenerator/QxSqlGenerator_Oracle.h
   ./include/QxDao/QxSqlGenerator/QxSqlGenerator_PostgreSQL.h
   ./include/QxDao/QxSqlGenerator/QxSqlGenerator_SQLite.h
   ./include/QxDao/QxSqlGenerator/QxSqlGenerator_MSSQLServer.h
   ./include/QxDao/QxSqlGenerator/QxSqlGenerator_Standard.h
   ./include/QxDao/QxRepository/IxRepository.h
   ./include/QxDao/QxRepository/QxRepository.h
   ./include/QxDao/QxRepository/QxRepositoryX.h
   ./include/QxDao/QxMongoDB/QxMongoDB_Helper.h
   ./include/QxSerialize/QxArchive.h
   ./include/QxSerialize/QxClone.h
   ./include/QxSerialize/QxDump.h
   ./include/QxSerialize/QxSerializeFastCompil.h
   ./include/QxSerialize/QxSerializeInvoker.h
   ./include/QxSerialize/QxSerializeMacro.h
   ./include/QxSerialize/QxSerialize.h
   ./include/QxSerialize/QxSerializeQDataStream.h
   ./include/QxSerialize/QxSerializeCheckInstance.h
   ./include/QxSerialize/QxSerializeQJson.h
   ./include/QxSerialize/boost/class_export/qx_boost_class_export.h
   ./include/QxSerialize/boost/portable_binary/portable_archive_exception.hpp
   ./include/QxSerialize/boost/portable_binary/portable_iarchive.hpp
   ./include/QxSerialize/boost/portable_binary/portable_oarchive.hpp
   ./include/QxSerialize/boost/QxSerializeInclude.h
   ./include/QxSerialize/boost/QxSerialize_shared_ptr.h
   ./include/QxSerialize/boost/QxSerialize_tuple.h
   ./include/QxSerialize/boost/QxSerialize_unordered_map.h
   ./include/QxSerialize/boost/QxSerialize_unordered_set.h
   ./include/QxSerialize/boost/QxExportDllMacroHpp.h
   ./include/QxSerialize/boost/QxExportDllMacroCpp.h
   ./include/QxSerialize/boost/QxExportDllBoostArchive.h
   ./include/QxSerialize/boost/QxImportDllBoostArchive.h
   ./include/QxSerialize/Qt/QxSerialize_QBrush.h
   ./include/QxSerialize/Qt/QxSerialize_QByteArray.h
   ./include/QxSerialize/Qt/QxSerialize_QColor.h
   ./include/QxSerialize/Qt/QxSerialize_QDate.h
   ./include/QxSerialize/Qt/QxSerialize_QDateTime.h
   ./include/QxSerialize/Qt/QxSerialize_QFont.h
   ./include/QxSerialize/Qt/QxSerialize_QHash.h
   ./include/QxSerialize/Qt/QxSerialize_QImage.h
   ./include/QxSerialize/Qt/QxSerialize_QFlags.h
   ./include/QxSerialize/Qt/QxSerialize_QLinkedList.h
   ./include/QxSerialize/Qt/QxSerialize_QList.h
   ./include/QxSerialize/Qt/QxSerialize_QMap.h
   ./include/QxSerialize/Qt/QxSerialize_QMatrix.h
   ./include/QxSerialize/Qt/QxSerialize_QObject.h
   ./include/QxSerialize/Qt/QxSerialize_QPair.h
   ./include/QxSerialize/Qt/QxSerialize_QPicture.h
   ./include/QxSerialize/Qt/QxSerialize_QPixmap.h
   ./include/QxSerialize/Qt/QxSerialize_QPoint.h
   ./include/QxSerialize/Qt/QxSerialize_QRect.h
   ./include/QxSerialize/Qt/QxSerialize_QRegExp.h
   ./include/QxSerialize/Qt/QxSerialize_QRegion.h
   ./include/QxSerialize/Qt/QxSerialize_QScopedPointer.h
   ./include/QxSerialize/Qt/QxSerialize_QSharedPointer.h
   ./include/QxSerialize/Qt/QxSerialize_QSize.h
   ./include/QxSerialize/Qt/QxSerialize_QString.h
   ./include/QxSerialize/Qt/QxSerialize_QTime.h
   ./include/QxSerialize/Qt/QxSerialize_QUrl.h
   ./include/QxSerialize/Qt/QxSerialize_QUuid.h
   ./include/QxSerialize/Qt/QxSerialize_QVariant.h
   ./include/QxSerialize/Qt/QxSerialize_QVector.h
   ./include/QxSerialize/Qt/QxSerialize_QWeakPointer.h
   ./include/QxSerialize/Qt/QxSerialize_QMultiHash.h
   ./include/QxSerialize/Qt/QxSerialize_QMultiMap.h
   ./include/QxSerialize/Qt/QxSerialize_QStringList.h
   ./include/QxSerialize/Qt/QxSerialize_QSqlError.h
   ./include/QxSerialize/Qx/QxSerialize_QxCollection.h
   ./include/QxSerialize/Qx/QxSerialize_QxDaoPointer.h
   ./include/QxSerialize/std/QxSerialize_std_tuple.h
   ./include/QxSerialize/std/QxSerialize_std_shared_ptr.h
   ./include/QxSerialize/std/QxSerialize_std_unique_ptr.h
   ./include/QxSerialize/std/QxSerialize_std_unordered_map.h
   ./include/QxSerialize/std/QxSerialize_std_unordered_set.h
   ./include/QxSerialize/QxBoostSerializeHelper/IxBoostSerializeRegisterHelper.h
   ./include/QxSerialize/QxBoostSerializeHelper/QxBoostInitGuid.h
   ./include/QxSerialize/QxBoostSerializeHelper/QxBoostSerializeHelper.h
   ./include/QxSerialize/QxBoostSerializeHelper/QxBoostSerializeRegisterHelper.h
   ./include/QxSerialize/QxBoostSerializeHelper/QxBoostSerializeRegisterHelperX.h
   ./include/QxSerialize/QDataStream/QxSerializeQDataStream_all_include.h
   ./include/QxSerialize/QDataStream/QxSerializeQDataStream_boost_optional.h
   ./include/QxSerialize/QDataStream/QxSerializeQDataStream_boost_scoped_ptr.h
   ./include/QxSerialize/QDataStream/QxSerializeQDataStream_boost_shared_ptr.h
   ./include/QxSerialize/QDataStream/QxSerializeQDataStream_boost_tuple.h
   ./include/QxSerialize/QDataStream/QxSerializeQDataStream_boost_unordered_map.h
   ./include/QxSerialize/QDataStream/QxSerializeQDataStream_boost_unordered_set.h
   ./include/QxSerialize/QDataStream/QxSerializeQDataStream_primitive_type.h
   ./include/QxSerialize/QDataStream/QxSerializeQDataStream_QFlags.h
   ./include/QxSerialize/QDataStream/QxSerializeQDataStream_QObject.h
   ./include/QxSerialize/QDataStream/QxSerializeQDataStream_QScopedPointer.h
   ./include/QxSerialize/QDataStream/QxSerializeQDataStream_QSharedPointer.h
   ./include/QxSerialize/QDataStream/QxSerializeQDataStream_QSqlError.h
   ./include/QxSerialize/QDataStream/QxSerializeQDataStream_QWeakPointer.h
   ./include/QxSerialize/QDataStream/QxSerializeQDataStream_std_list.h
   ./include/QxSerialize/QDataStream/QxSerializeQDataStream_std_map.h
   ./include/QxSerialize/QDataStream/QxSerializeQDataStream_std_pair.h
   ./include/QxSerialize/QDataStream/QxSerializeQDataStream_std_set.h
   ./include/QxSerialize/QDataStream/QxSerializeQDataStream_std_shared_ptr.h
   ./include/QxSerialize/QDataStream/QxSerializeQDataStream_std_string.h
   ./include/QxSerialize/QDataStream/QxSerializeQDataStream_std_tuple.h
   ./include/QxSerialize/QDataStream/QxSerializeQDataStream_std_unique_ptr.h
   ./include/QxSerialize/QDataStream/QxSerializeQDataStream_std_unordered_map.h
   ./include/QxSerialize/QDataStream/QxSerializeQDataStream_std_unordered_set.h
   ./include/QxSerialize/QDataStream/QxSerializeQDataStream_std_vector.h
   ./include/QxSerialize/QDataStream/QxSerializeQDataStream_qx_registered_class.h
   ./include/QxSerialize/QJson/QxSerializeQJson_all_include.h
   ./include/QxSerialize/QJson/QxSerializeQJson_boost_scoped_ptr.h
   ./include/QxSerialize/QJson/QxSerializeQJson_boost_shared_ptr.h
   ./include/QxSerialize/QJson/QxSerializeQJson_boost_tuple.h
   ./include/QxSerialize/QJson/QxSerializeQJson_boost_unordered_map.h
   ./include/QxSerialize/QJson/QxSerializeQJson_boost_unordered_set.h
   ./include/QxSerialize/QJson/QxSerializeQJson_IxParameter.h
   ./include/QxSerialize/QJson/QxSerializeQJson_IxService.h
   ./include/QxSerialize/QJson/QxSerializeQJson_IxSqlElement.h
   ./include/QxSerialize/QJson/QxSerializeQJson_IxPersistable.h
   ./include/QxSerialize/QJson/QxSerializeQJson_QBrush.h
   ./include/QxSerialize/QJson/QxSerializeQJson_QColor.h
   ./include/QxSerialize/QJson/QxSerializeQJson_QFlags.h
   ./include/QxSerialize/QJson/QxSerializeQJson_QFont.h
   ./include/QxSerialize/QJson/QxSerializeQJson_QHash.h
   ./include/QxSerialize/QJson/QxSerializeQJson_QImage.h
   ./include/QxSerialize/QJson/QxSerializeQJson_QLinkedList.h
   ./include/QxSerialize/QJson/QxSerializeQJson_QList.h
   ./include/QxSerialize/QJson/QxSerializeQJson_QMap.h
   ./include/QxSerialize/QJson/QxSerializeQJson_QMatrix.h
   ./include/QxSerialize/QJson/QxSerializeQJson_QMultiHash.h
   ./include/QxSerialize/QJson/QxSerializeQJson_QMultiMap.h
   ./include/QxSerialize/QJson/QxSerializeQJson_QObject.h
   ./include/QxSerialize/QJson/QxSerializeQJson_QPair.h
   ./include/QxSerialize/QJson/QxSerializeQJson_QPicture.h
   ./include/QxSerialize/QJson/QxSerializeQJson_QPixmap.h
   ./include/QxSerialize/QJson/QxSerializeQJson_QPoint.h
   ./include/QxSerialize/QJson/QxSerializeQJson_QRect.h
   ./include/QxSerialize/QJson/QxSerializeQJson_QRegExp.h
   ./include/QxSerialize/QJson/QxSerializeQJson_QRegion.h
   ./include/QxSerialize/QJson/QxSerializeQJson_QScopedPointer.h
   ./include/QxSerialize/QJson/QxSerializeQJson_QSharedPointer.h
   ./include/QxSerialize/QJson/QxSerializeQJson_QSize.h
   ./include/QxSerialize/QJson/QxSerializeQJson_QSqlError.h
   ./include/QxSerialize/QJson/QxSerializeQJson_QStringList.h
   ./include/QxSerialize/QJson/QxSerializeQJson_QUrl.h
   ./include/QxSerialize/QJson/QxSerializeQJson_QVector.h
   ./include/QxSerialize/QJson/QxSerializeQJson_QWeakPointer.h
   ./include/QxSerialize/QJson/QxSerializeQJson_QVariantHash.h
   ./include/QxSerialize/QJson/QxSerializeQJson_QVariantMap.h
   ./include/QxSerialize/QJson/QxSerializeQJson_qx_registered_class.h
   ./include/QxSerialize/QJson/QxSerializeQJson_QxCollection.h
   ./include/QxSerialize/QJson/QxSerializeQJson_QxDaoPointer.h
   ./include/QxSerialize/QJson/QxSerializeQJson_QxInvalidValue.h
   ./include/QxSerialize/QJson/QxSerializeQJson_QxInvalidValueX.h
   ./include/QxSerialize/QJson/QxSerializeQJson_QxSqlQuery.h
   ./include/QxSerialize/QJson/QxSerializeQJson_QxTransaction.h
   ./include/QxSerialize/QJson/QxSerializeQJson_std_list.h
   ./include/QxSerialize/QJson/QxSerializeQJson_std_map.h
   ./include/QxSerialize/QJson/QxSerializeQJson_std_pair.h
   ./include/QxSerialize/QJson/QxSerializeQJson_std_set.h
   ./include/QxSerialize/QJson/QxSerializeQJson_std_shared_ptr.h
   ./include/QxSerialize/QJson/QxSerializeQJson_std_tuple.h
   ./include/QxSerialize/QJson/QxSerializeQJson_std_unique_ptr.h
   ./include/QxSerialize/QJson/QxSerializeQJson_std_unordered_map.h
   ./include/QxSerialize/QJson/QxSerializeQJson_std_unordered_set.h
   ./include/QxSerialize/QJson/QxSerializeQJson_std_vector.h
   ./include/QxRestApi/QxRestApi.h
   ./include/QxTraits/get_base_class.h
   ./include/QxTraits/get_primary_key.h
   ./include/QxTraits/get_class_name.h
   ./include/QxTraits/get_class_name_primitive.h
   ./include/QxTraits/is_boost_intrusive_ptr.h
   ./include/QxTraits/is_boost_scoped_ptr.h
   ./include/QxTraits/is_boost_shared_ptr.h
   ./include/QxTraits/is_boost_weak_ptr.h
   ./include/QxTraits/is_qt_shared_data_ptr.h
   ./include/QxTraits/is_qt_shared_ptr.h
   ./include/QxTraits/is_qt_scoped_ptr.h
   ./include/QxTraits/is_qt_weak_ptr.h
   ./include/QxTraits/is_smart_ptr.h
   ./include/QxTraits/is_boost_unordered_map.h
   ./include/QxTraits/is_boost_unordered_set.h
   ./include/QxTraits/is_container.h
   ./include/QxTraits/is_qt_hash.h
   ./include/QxTraits/is_qt_linked_list.h
   ./include/QxTraits/is_qt_list.h
   ./include/QxTraits/is_qt_map.h
   ./include/QxTraits/is_qt_multi_hash.h
   ./include/QxTraits/is_qt_multi_map.h
   ./include/QxTraits/is_qt_set.h
   ./include/QxTraits/is_qt_vector.h
   ./include/QxTraits/is_qt_variant_compatible.h
   ./include/QxTraits/is_qx_collection.h
   ./include/QxTraits/is_std_list.h
   ./include/QxTraits/is_std_map.h
   ./include/QxTraits/is_std_set.h
   ./include/QxTraits/is_std_vector.h
   ./include/QxTraits/is_container_base_of.h
   ./include/QxTraits/is_container_key_value.h
   ./include/QxTraits/is_container_to_pod.h
   ./include/QxTraits/is_ptr_base_of.h
   ./include/QxTraits/is_ptr_to_pod.h
   ./include/QxTraits/is_qx_pod.h
   ./include/QxTraits/is_qx_registered.h
   ./include/QxTraits/is_smart_ptr_base_of.h
   ./include/QxTraits/is_smart_ptr_to_pod.h
   ./include/QxTraits/archive_wide_traits.h
   ./include/QxTraits/archive_printable.h
   ./include/QxTraits/remove_attr.h
   ./include/QxTraits/remove_smart_ptr.h
   ./include/QxTraits/construct_ptr.h
   ./include/QxTraits/construct_null_qvariant.h
   ./include/QxTraits/get_sql_type.h
   ./include/QxTraits/generic_container.h
   ./include/QxTraits/is_valid_primary_key.h
   ./include/QxTraits/is_qx_dao_ptr.h
   ./include/QxTraits/is_equal.h
   ./include/QxTraits/qt_meta_object.h
   ./include/QxTraits/qx_traits.h
   ./include/QxTraits/is_std_shared_ptr.h
   ./include/QxTraits/is_std_unique_ptr.h
   ./include/QxTraits/is_std_unordered_map.h
   ./include/QxTraits/is_std_unordered_set.h
   ./include/QxTraits/is_std_weak_ptr.h
   ./include/QxFunction/IxFunction.h
   ./include/QxFunction/QxFunction_0.h
   ./include/QxFunction/QxFunction_1.h
   ./include/QxFunction/QxFunction_2.h
   ./include/QxFunction/QxFunction_3.h
   ./include/QxFunction/QxFunction_4.h
   ./include/QxFunction/QxFunction_5.h
   ./include/QxFunction/QxFunction_6.h
   ./include/QxFunction/QxFunction_7.h
   ./include/QxFunction/QxFunction_8.h
   ./include/QxFunction/QxFunction_9.h
   ./include/QxFunction/QxFunctionError.h
   ./include/QxFunction/QxFunctionInclude.h
   ./include/QxFunction/QxFunctionMacro.h
   ./include/QxFunction/QxParameters.h
   ./include/QxService/IxParameter.h
   ./include/QxService/IxService.h
   ./include/QxService/QxClientAsync.h
   ./include/QxService/QxConnect.h
   ./include/QxService/QxServer.h
   ./include/QxService/QxService.h
   ./include/QxService/QxThread.h
   ./include/QxService/QxThreadPool.h
   ./include/QxService/QxTools.h
   ./include/QxService/QxTransaction.h
   ./include/QxHttpServer/QxHttpRequest.h
   ./include/QxHttpServer/QxHttpResponse.h
   ./include/QxHttpServer/QxHttpServer.h
   ./include/QxHttpServer/QxHttpTransaction.h
   ./include/QxHttpServer/QxHttpCookie.h
   ./include/QxHttpServer/QxHttpSession.h
   ./include/QxHttpServer/QxHttpSessionManager.h
   ./include/QxValidator/IxValidator.h
   ./include/QxValidator/IxValidatorX.h
   ./include/QxValidator/QxInvalidValue.h
   ./include/QxValidator/QxInvalidValueX.h
   ./include/QxValidator/QxValidator.h
   ./include/QxValidator/QxValidatorError.h
   ./include/QxValidator/QxValidatorFct.h
   ./include/QxValidator/QxValidatorX.h
   ./include/QxModelView/IxModel.h
   ./include/QxModelView/QxModel.h
   ./include/QxModelView/QxNestedModel.h
   ./include/QxModelView/QxModelService.h
   ./include/QxModelView/QxModelRowCompare.h
   ./include/QxExtras/QxBoostOptionalOnly.h
   ./include/QxExtras/QxStdOptional.h
   ./include/QxOrm.h
   ./include/QxOrm_Impl.h
   ./include/QxMemLeak.h
   ./include/QxDaoRepository.h
   ./include/QxModelView.h
   ./include/QxServices.h
)

# To reduce compilation times, it is recommended to define _QX_UNITY_BUILD compilation option
# More details in QxOrm.cmake configuration file, section 'Unity Build'
if(_QX_UNITY_BUILD)

   set(QX_SRCS
      ./src/all.cpp
   )

else() # _QX_UNITY_BUILD

   set(QX_SRCS
      ./src/QxSerialize/QDataStream/QxSerializeQDataStream_primitive_type.cpp
      ./src/QxSerialize/QDataStream/QxSerializeQDataStream_QObject.cpp
      ./src/QxSerialize/QDataStream/QxSerializeQDataStream_QSqlError.cpp
      ./src/QxSerialize/QDataStream/QxSerializeQDataStream_std_string.cpp
      ./src/QxSerialize/QDataStream/QxSerializeQDataStream_qx_registered_class.cpp
      ./src/QxSerialize/QJson/QxSerializeQJson_qx_registered_class.cpp
      ./src/QxSerialize/QJson/QxSerializeQJson_IxService.cpp
      ./src/QxSerialize/QJson/QxSerializeQJson_IxSqlElement.cpp
      ./src/QxSerialize/QJson/QxSerializeQJson_QBrush.cpp
      ./src/QxSerialize/QJson/QxSerializeQJson_QColor.cpp
      ./src/QxSerialize/QJson/QxSerializeQJson_QFont.cpp
      ./src/QxSerialize/QJson/QxSerializeQJson_QImage.cpp
      ./src/QxSerialize/QJson/QxSerializeQJson_QMatrix.cpp
      ./src/QxSerialize/QJson/QxSerializeQJson_QObject.cpp
      ./src/QxSerialize/QJson/QxSerializeQJson_QPicture.cpp
      ./src/QxSerialize/QJson/QxSerializeQJson_QPixmap.cpp
      ./src/QxSerialize/QJson/QxSerializeQJson_QPoint.cpp
      ./src/QxSerialize/QJson/QxSerializeQJson_QRect.cpp
      ./src/QxSerialize/QJson/QxSerializeQJson_QRegExp.cpp
      ./src/QxSerialize/QJson/QxSerializeQJson_QRegion.cpp
      ./src/QxSerialize/QJson/QxSerializeQJson_QSize.cpp
      ./src/QxSerialize/QJson/QxSerializeQJson_QSqlError.cpp
      ./src/QxSerialize/QJson/QxSerializeQJson_QStringList.cpp
      ./src/QxSerialize/QJson/QxSerializeQJson_QxInvalidValue.cpp
      ./src/QxSerialize/QJson/QxSerializeQJson_QxInvalidValueX.cpp
      ./src/QxSerialize/QJson/QxSerializeQJson_QxSqlQuery.cpp
      ./src/QxSerialize/QJson/QxSerializeQJson_QxTransaction.cpp
      ./src/QxMemLeak/bool_array.cpp
      ./src/QxMemLeak/debug_new.cpp
      ./src/QxMemLeak/mem_pool_base.cpp
      ./src/QxMemLeak/static_mem_pool.cpp
      ./src/QxSingleton/IxSingleton.cpp
      ./src/QxSingleton/QxSingletonX.cpp
      ./src/QxSingleton/QxSingletonInit.cpp
      ./src/QxFactory/IxFactory.cpp
      ./src/QxFactory/QxFactoryX.cpp
      ./src/QxCollection/QxCollection.cpp
      ./src/QxCommon/QxBool.cpp
      ./src/QxDao/QxSession.cpp
      ./src/QxDao/IxDao_Helper.cpp
      ./src/QxDao/IxPersistable.cpp
      ./src/QxDao/IxPersistableCollection.cpp
      ./src/QxDao/IxPersistableList.cpp
      ./src/QxDao/QxSqlRelationLinked.cpp
      ./src/QxCommon/QxCache.cpp
      ./src/QxCommon/QxSimpleCrypt.cpp
      ./src/QxConvert/QxConvert_Export.cpp
      ./src/QxRegister/IxClass.cpp
      ./src/QxRegister/QxClassX.cpp
      ./src/QxDataMember/IxDataMember.cpp
      ./src/QxDataMember/IxDataMemberX.cpp
      ./src/QxDataMember/QxDataMember_QObject.cpp
      ./src/QxTraits/unit_test_is_smart_ptr.cpp
      ./src/QxTraits/unit_test_is_container.cpp
      ./src/QxDao/IxSqlQueryBuilder.cpp
      ./src/QxDao/QxSqlDatabase.cpp
      ./src/QxDao/IxSqlRelation.cpp
      ./src/QxDao/QxSqlQuery.cpp
      ./src/QxDao/QxDaoAsync.cpp
      ./src/QxDao/QxSqlRelationParams.cpp
      ./src/QxDao/QxSoftDelete.cpp
      ./src/QxDao/QxDateNeutral.cpp
      ./src/QxDao/QxDateTimeNeutral.cpp
      ./src/QxDao/QxTimeNeutral.cpp
      ./src/QxDao/QxSqlElement/IxSqlElement.cpp
      ./src/QxDao/QxSqlElement/QxSqlCompare.cpp
      ./src/QxDao/QxSqlElement/QxSqlElementTemp.cpp
      ./src/QxDao/QxSqlElement/QxSqlEmbedQuery.cpp
      ./src/QxDao/QxSqlElement/QxSqlExpression.cpp
      ./src/QxDao/QxSqlElement/QxSqlFreeText.cpp
      ./src/QxDao/QxSqlElement/QxSqlIn.cpp
      ./src/QxDao/QxSqlElement/QxSqlIsBetween.cpp
      ./src/QxDao/QxSqlElement/QxSqlIsNull.cpp
      ./src/QxDao/QxSqlElement/QxSqlLimit.cpp
      ./src/QxDao/QxSqlElement/QxSqlSort.cpp
      ./src/QxDao/QxSqlGenerator/IxSqlGenerator.cpp
      ./src/QxDao/QxSqlGenerator/QxSqlGenerator_MySQL.cpp
      ./src/QxDao/QxSqlGenerator/QxSqlGenerator_Oracle.cpp
      ./src/QxDao/QxSqlGenerator/QxSqlGenerator_PostgreSQL.cpp
      ./src/QxDao/QxSqlGenerator/QxSqlGenerator_SQLite.cpp
      ./src/QxDao/QxSqlGenerator/QxSqlGenerator_MSSQLServer.cpp
      ./src/QxDao/QxSqlGenerator/QxSqlGenerator_Standard.cpp
      ./src/QxDao/QxRepository/IxRepository.cpp
      ./src/QxDao/QxRepository/QxRepositoryX.cpp
      ./src/QxDao/QxMongoDB/QxMongoDB_Helper.cpp
      ./src/QxSerialize/QxSerializeCheckInstance.cpp
      ./src/QxSerialize/QxBoostSerializeHelper/IxBoostSerializeRegisterHelper.cpp
      ./src/QxSerialize/QxBoostSerializeHelper/QxBoostSerializeRegisterHelperX.cpp
      ./src/QxSerialize/boost/QxExportDllBoostArchive.cpp
      ./src/QxSerialize/Qt/QxSerialize_QBrush.cpp
      ./src/QxSerialize/Qt/QxSerialize_QByteArray.cpp
      ./src/QxSerialize/Qt/QxSerialize_QColor.cpp
      ./src/QxSerialize/Qt/QxSerialize_QDate.cpp
      ./src/QxSerialize/Qt/QxSerialize_QDateTime.cpp
      ./src/QxSerialize/Qt/QxSerialize_QFont.cpp
      ./src/QxSerialize/Qt/QxSerialize_QImage.cpp
      ./src/QxSerialize/Qt/QxSerialize_QMatrix.cpp
      ./src/QxSerialize/Qt/QxSerialize_QObject.cpp
      ./src/QxSerialize/Qt/QxSerialize_QPicture.cpp
      ./src/QxSerialize/Qt/QxSerialize_QPixmap.cpp
      ./src/QxSerialize/Qt/QxSerialize_QPoint.cpp
      ./src/QxSerialize/Qt/QxSerialize_QRect.cpp
      ./src/QxSerialize/Qt/QxSerialize_QRegExp.cpp
      ./src/QxSerialize/Qt/QxSerialize_QRegion.cpp
      ./src/QxSerialize/Qt/QxSerialize_QSize.cpp
      ./src/QxSerialize/Qt/QxSerialize_QString.cpp
      ./src/QxSerialize/Qt/QxSerialize_QStringList.cpp
      ./src/QxSerialize/Qt/QxSerialize_QTime.cpp
      ./src/QxSerialize/Qt/QxSerialize_QUrl.cpp
      ./src/QxSerialize/Qt/QxSerialize_QUuid.cpp
      ./src/QxSerialize/Qt/QxSerialize_QVariant.cpp
      ./src/QxSerialize/Qt/QxSerialize_QSqlError.cpp
      ./src/QxRestApi/QxRestApi.cpp
      ./src/QxService/IxParameter.cpp
      ./src/QxService/IxService.cpp
      ./src/QxService/QxConnect.cpp
      ./src/QxService/QxServer.cpp
      ./src/QxService/QxThread.cpp
      ./src/QxService/QxThreadPool.cpp
      ./src/QxService/QxTools.cpp
      ./src/QxService/QxTransaction.cpp
      ./src/QxHttpServer/QxHttpRequest.cpp
      ./src/QxHttpServer/QxHttpResponse.cpp
      ./src/QxHttpServer/QxHttpServer.cpp
      ./src/QxHttpServer/QxHttpTransaction.cpp
      ./src/QxHttpServer/QxHttpCookie.cpp
      ./src/QxHttpServer/QxHttpSession.cpp
      ./src/QxHttpServer/QxHttpSessionManager.cpp
      ./src/QxValidator/IxValidator.cpp
      ./src/QxValidator/IxValidatorX.cpp
      ./src/QxValidator/QxInvalidValue.cpp
      ./src/QxValidator/QxInvalidValueX.cpp
      ./src/QxModelView/IxModel.cpp
      ./src/QxModelView/QxNestedModel.cpp
      ./src/QxModelView/QxModelRowCompare.cpp
      ./src/main.cpp
   )

endif() # _QX_UNITY_BUILD

set(QX_INLS
   ./inl/QxCollection/QxCollection.inl
   ./inl/QxCollection/QxCollectionIterator.inl
   ./inl/QxConvert/QxConvert_FromString.inl
   ./inl/QxConvert/QxConvert_FromVariant.inl
   ./inl/QxConvert/QxConvert_FromJson.inl
   ./inl/QxConvert/QxConvert_Qt.inl
   ./inl/QxConvert/QxConvert_ToString.inl
   ./inl/QxConvert/QxConvert_ToVariant.inl
   ./inl/QxConvert/QxConvert_ToJson.inl
   ./inl/QxConvert/QxConvert_WithIndex.inl
   ./inl/QxDao/QxDao_Count.inl
   ./inl/QxDao/QxDao_CreateTable.inl
   ./inl/QxDao/QxDao_DeleteAll.inl
   ./inl/QxDao/QxDao_DeleteById.inl
   ./inl/QxDao/QxDao_ExecuteQuery.inl
   ./inl/QxDao/QxDao_Exist.inl
   ./inl/QxDao/QxDao_FetchAll.inl
   ./inl/QxDao/QxDao_FetchAll_WithRelation.inl
   ./inl/QxDao/QxDao_FetchById.inl
   ./inl/QxDao/QxDao_FetchById_WithRelation.inl
   ./inl/QxDao/QxDao_Helper.inl
   ./inl/QxDao/QxDao_Helper_Container.inl
   ./inl/QxDao/QxDao_Insert.inl
   ./inl/QxDao/QxDao_Insert_WithRelation.inl
   ./inl/QxDao/QxDao_Save.inl
   ./inl/QxDao/QxDao_Save_WithRelation.inl
   ./inl/QxDao/QxDao_Save_WithRelation_Recursive.inl
   ./inl/QxDao/QxDao_Trigger.inl
   ./inl/QxDao/QxDao_Update.inl
   ./inl/QxDao/QxDao_Update_Optimized.inl
   ./inl/QxDao/QxDao_Update_WithRelation.inl
   ./inl/QxDao/QxSqlQueryHelper_CreateTable.inl
   ./inl/QxDao/QxSqlQueryHelper_DeleteById.inl
   ./inl/QxDao/QxSqlQueryHelper_Exist.inl
   ./inl/QxDao/QxSqlQueryHelper_FetchAll.inl
   ./inl/QxDao/QxSqlQueryHelper_FetchAll_WithRelation.inl
   ./inl/QxDao/QxSqlQueryHelper_FetchById.inl
   ./inl/QxDao/QxSqlQueryHelper_FetchById_WithRelation.inl
   ./inl/QxDao/QxSqlQueryHelper_Insert.inl
   ./inl/QxDao/QxSqlQueryHelper_Update.inl
   ./inl/QxDataMember/QxDataMember.inl
   ./inl/QxDataMember/QxDataMemberX.inl
   ./inl/QxFactory/QxFactory.inl
   ./inl/QxRegister/QxClass.inl
   ./inl/QxSerialize/QxArchive.inl
   ./inl/QxSerialize/QxSerializeInvoker.inl
   ./inl/QxSingleton/QxSingleton.inl
)

if(_QX_STATIC_BUILD)
   add_library(XdlOrm STATIC ${QX_SRCS} ${QX_HEADERS} ${QX_INLS})
else()
   add_library(XdlOrm SHARED ${QX_SRCS} ${QX_HEADERS} ${QX_INLS})
endif()

target_compile_definitions(XdlOrm PRIVATE -D_QX_BUILDING_QX_ORM)

target_include_directories(XdlOrm
   PUBLIC
   $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
   $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/inl>
   $<INSTALL_INTERFACE:include>
   $<INSTALL_INTERFACE:inl>
)

if(NOT TARGET xdlorm::xdlorm)
   add_library(xdlorm::xdlorm ALIAS XdlOrm)
endif()

if(COMMAND target_precompile_headers)
   target_precompile_headers(XdlOrm PRIVATE ./include/QxPrecompiled.h)
endif() # (COMMAND target_precompile_headers)

target_link_libraries(XdlOrm ${QX_LIBRARIES})

# set_target_properties(XdlOrm PROPERTIES
#                      ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${CMAKE_SOURCE_DIR}/build/UI/Main
#                      RUNTIME_OUTPUT_DIRECTORY_DEBUG ${CMAKE_SOURCE_DIR}/build/UI/Main
#                      LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/lib"
#                      RUNTIME_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/lib"
#                      ARCHIVE_OUTPUT_DIRECTORY_DEBUG "${CMAKE_CURRENT_SOURCE_DIR}/lib"
#                      LIBRARY_OUTPUT_DIRECTORY_DEBUG "${CMAKE_CURRENT_SOURCE_DIR}/lib"
#                      ARCHIVE_OUTPUT_DIRECTORY_RELEASE "${CMAKE_CURRENT_SOURCE_DIR}/lib"
#                      LIBRARY_OUTPUT_DIRECTORY_RELEASE "${CMAKE_CURRENT_SOURCE_DIR}/lib"
#                      RUNTIME_OUTPUT_DIRECTORY_RELEASE "${CMAKE_CURRENT_SOURCE_DIR}/lib"
#                      ARCHIVE_OUTPUT_DIRECTORY_MINSIZEREL "${CMAKE_CURRENT_SOURCE_DIR}/lib"
#                      LIBRARY_OUTPUT_DIRECTORY_MINSIZEREL "${CMAKE_CURRENT_SOURCE_DIR}/lib"
#                      RUNTIME_OUTPUT_DIRECTORY_MINSIZEREL "${CMAKE_CURRENT_SOURCE_DIR}/lib"
#                      ARCHIVE_OUTPUT_DIRECTORY_RELWITHDEBINFO "${CMAKE_CURRENT_SOURCE_DIR}/lib"
#                      LIBRARY_OUTPUT_DIRECTORY_RELWITHDEBINFO "${CMAKE_CURRENT_SOURCE_DIR}/lib"
#                      RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO "${CMAKE_CURRENT_SOURCE_DIR}/lib"
#                      )

# To sort all files by folder in MSVC and XCode solution
qx_auto_source_group("${QX_SRCS};${QX_HEADERS};${QX_INLS}")

# Define CMAKE_INSTALL_PREFIX variable to put the location where to copy all files
install(TARGETS XdlOrm DESTINATION lib)
install(DIRECTORY ./include/ DESTINATION include)
install(DIRECTORY ./inl/ DESTINATION inl)
