cmake_minimum_required(VERSION 3.16)

project(wfKernal)

set(SOURCES
    "AboutTWTDlg.cpp"
    "AmountSettingHeadDlg.cpp"
    "ArxMain.cpp"
    "AutoLinkSanitaraySettingDlg.cpp"
    "BaseHoleDlg.cpp"
    "BaseHoleOperation.cpp"
    "BushingTypeDlg.cpp"
    "CalcDirtDlg.cpp"
    "CalcFeedDataDlg.cpp"
    "ConcealInstallSanitarySys.cpp"
    "DangFloorDlg.cpp"
    "DimPipe.cpp"
    "DimSettingDlg.cpp"
    "DistFloorDlg.cpp"
    "DrainChamfer.cpp"
    "DrawDrainChamfer.cpp"
    "DrawPipe.cpp"
    "EditPipe.cpp"
    "EditWaterBucketDlg.cpp"
    "FeedCalc.cpp"
    "FindAndInsteadVPipeDimDlg.cpp"
    "FireExtinguisherCmd.cpp"
    "FireExtinguisherJig.cpp"
    "FloorHoleDlg.cpp"
    "FloorHoleOperation.cpp"
    "GradientEleCalcDlg.cpp"
    "HydrantCalcDataDlg.cpp"
    "HydrantCalcDlg.cpp"
    "HydrantSetting.cpp"
    "IndoorSys.cpp"
    "InsBlock.cpp"
    "jig.cpp"
    "JoinPipe2Sanitary.cpp"
    "LayerManBar.cpp"
    "LayFireExtinguisherDlg.cpp"
    "LinkHydrantDlg.cpp"
    "LinkHydrantNew.cpp"
    "LinkHydrantPipeDlg.cpp"
    "LinkHydrantVPipeDlg.cpp"
    "MovePipe.cpp"
    "NewSanitaryDefineDlg.cpp"
    "NewSanitaryTypeDlg.cpp"
    "other.cpp"
    "OutDimSettingDlg.cpp"
    "outdoor.cpp"
    "PartitionSanitarySys.cpp"
    "PipeChangeMatDlg.cpp"
    "PipeDoubleDlg.cpp"
    "PipeSettingChild1.cpp"
    "PipeSettingChild2Dlg.cpp"
    "PipeSettingChild3Dlg.cpp"
    "PipeSettingFrameDlg.cpp"
    "PipeStandEditDlg.cpp"
    "PipeVMultDrawDlg.cpp"
    "PrincipleDirtDlg.cpp"
    "PrincipleFeedDlg.cpp"
    "PrinciplePubFeedDlg.cpp"
    "ProtectRadiusDlg.cpp"
    "SanitaryDangDlg.cpp"
    "SanitaryDefineDlg.cpp"
    "SanitaryLinkTypeDlg.cpp"
    "SanitaryPicDlg.cpp"
    "SanitarySys.cpp"
    "SanitarySysForDrain.cpp"
    "SanitarySysForFeedWater.cpp"
    "SanitaryTypeDlg.cpp"
    "SantaryIndustryDlg.cpp"
    "SelPipeSysDlg.cpp"
    "SelVPipeDlg.cpp"
    "SnapSprinkerJig.cpp"
    "SprinkIsometryDlg.cpp"
    "SprinklerByArcDlg.cpp"
    "SprinklerByFreeDlg.cpp"
    "SprinklerByInterDlg.cpp"
    "SprinklerBySectionDlg.cpp"
    "SprinklerCalc.cpp"
    "SprinklerCalcDlg.cpp"
    "SprinklerEdit.cpp"
    "StdAfx.cpp"
    "TBaseHoleLableEdJig.cpp"
    "TDbVirtualPipe.cpp"
    "TextSettingDlg.cpp"
    "TFloorHoleLabelEdJig.cpp"
    "TPipeGraph.cpp"
    "TVPipeDimJig.cpp"
    "UnfoldInstallAdjustElevation.cpp"
    "UnfoldInstallSanitarySys.cpp"
    "ValveEditDlg.cpp"
    "VPipeDimDnSettingDlg.cpp"
    "AccessoryDrainDlg.cpp"
    "AmountSettingDlg.cpp"
    "BlockNum.cpp"
    "DrawStandPipeDlg.cpp"
    "EquipmentEditDlg.cpp"
    "FeedAccessoryDlg.cpp"
    "HydrantPlanDlg.cpp"
    "HydrantSysDlg.cpp"
    "InsBlockDlg.cpp"
    "PipeEditDlg.cpp"
    "PipeSettingDlg.cpp"
    "Plan2SysDlg.cpp"
    "SelectBlkDlg.cpp"
    "TgTwtSettingDlg.cpp"
    "ZoomDlg.cpp"
    "PrincipleSysDlg.cpp"
    "SprinklerByLineDlg.cpp"
    "SprinklerByRectDlg.cpp"
    "SprinklerModifyDlg.cpp"
    "SprinklerSysDlg.cpp"
    "Block.cpp"
    "BTNSTBmp.CPP"
    "BtnSTICON.cpp"
    "InputPoly.cpp"
    "MySpin.cpp"
    "public_func.cpp"
    "public_global.cpp"
    "RealEdit.cpp"
    "SlideStatic.cpp"
    "TBlockEdJig.cpp"
    "TipWnd.cpp"
    "TWordFormulasTemplet.cpp"
    "WallIdentify.cpp"
    "XBlock.cpp"
    "XDbOsnapPoint.cpp"
    "XFilePathName.cpp"
    "XRect.cpp"
    "XText.cpp"
    "XToolBarCtrl.cpp"
    "XWall.cpp"
    "AllDwgDlg.cpp"
    "LineTypeLibDlg.cpp"
    "LineTypeManDlg.cpp"
    "OutDrainCalcDlg.cpp"
    "PipeMatSpecDlg.cpp"
    "CanalCalcDlg.cpp"
    "HidePipeDlg.cpp"
    "TwtKernal.rc"
    # "wfkernal.def"
)
add_def_file_name(SOURCES "wfkernal")

add_library(wfKernal SHARED ${SOURCES})

target_set_name_and_suffix(wfKernal "wfKernal" ".arx")

target_compile_definitions(wfKernal PRIVATE
    ACRXAPP
    S4FOX
    S4NT
    TAR_LANGUAGE=1
)

simple_link_cad_sdk(wfKernal)

target_link_options(wfKernal PRIVATE 
        "/NODEFAULTLIB:LIBCMT"      # 忽略 Release 版静态 CRT
    )

target_link_libraries(wfKernal PRIVATE
    shs_dbf
    wfK
    wfpipew
    ThirdParty::TG
)

target_precompile_headers(wfKernal PRIVATE StdAfx.h)

set_debug_post_build(wfKernal "wfKernal" ".arx")