add_executable(fikocad WIN32 main.cpp belge_penceresi.cpp acilis_splash.cpp surec_kopru.cpp surec_yonetici_panel.cpp orkestra_kule.cpp orkestra_soket_win.cpp orkestra_metrik.cpp orkestra_tcp_win.cpp orkestra_kripto.cpp istakip_ag.cpp istakip_servis.cpp belge.cpp belge_ciz.cpp isin_alani.cpp belge_yonetici.cpp ayar_kalici.cpp ui_ortak.cpp dosya_islemleri.cpp oto_kayit.cpp pafta_ciz.cpp pmi_ciz.cpp malzeme_gpu.cpp malzeme_nesnesi.cpp malzeme_io.cpp malzeme_penceresi.cpp zeka_penceresi.cpp istakip_sema.cpp istakip_sema_penceresi.cpp istakip_filtre.cpp istakip_gorunum.cpp istakip_gantt.cpp istakip_grafik.cpp istakip_penceresi.cpp istakip_kayit_penceresi.cpp ozellikler_paneli.cpp yardimci_penceler.cpp kinematik_agac.cpp kinematik_penceresi.cpp urun_agaci_paneli.cpp isik_penceresi.cpp sketch_ui.cpp cam_paneli.cpp cam_operasyon_penceresi.cpp cam_simulasyon_penceresi.cpp sim_ses.cpp kutuk_async.cpp cam_parca_op_penceresi.cpp cam_takim_penceresi.cpp cam_takim_ekseni_penceresi.cpp cam_urun_agaci.cpp cam_strateji_semasi.cpp cam_makro_onizleme.cpp baglam_hud.cpp baglam_menu.cpp arama_menu.cpp durum_cubugu.cpp feature_penceresi.cpp hover_karti.cpp olcum_penceresi.cpp perf_hud.cpp sahne_overlay.cpp akilli_secim.cpp makro_oneri.cpp kafa_penceresi.cpp yardim.cpp dinamik_komut_penceresi.cpp guncelleme_kontrol.cpp guncelleme_indir.cpp guncelleme_penceresi.cpp geri_bildirim.cpp geri_bildirim_penceresi.cpp referans_penceresi.cpp gsd_penceresi.cpp hizli3d_penceresi.cpp workbench_secici.cpp kontrol_merkezi.cpp sistem_metrik.cpp analiz_penceresi.cpp analiz_urun_agaci.cpp fark_tur.cpp fark_panel.cpp fark_karsilastirma.cpp dokum_penceresi.cpp strafor_penceresi.cpp agirlik_penceresi.cpp ayarlar_penceresi.cpp arac_kayitlari.cpp ayar_kayitlari.cpp lisans_kimlikler.cpp lisans_yukle.cpp lisans_uzak.cpp context_pick_ui.cpp context_pick_ui.hpp ) # --- Lisans Uretici arayuzu: MUSTERI SURUMUNDE DERLENMEZ --- # Calisma-zamani gizleme (menu komutunu kaydetmemek) YETMEZ: kod musteri # ikilisinde kalirsa lisans formati/uretim akisi tersine muhendislige acik olur ve # bir saldirgan hazir arayuzu binary yamasiyla acabilir. Bu yuzden kaynak DOSYA # yalnizca uretici makinede derlenir: cmake -DFIKO_URETICI_UI=ON option(FIKO_URETICI_UI "Lisans Uretici arayuzunu derle (YALNIZ uretici makine)" OFF) if(FIKO_URETICI_UI) target_sources(fikocad PRIVATE lisans_uretici_penceresi.cpp) target_compile_definitions(fikocad PRIVATE FIKO_URETICI_UI) endif() target_link_libraries(fikocad PRIVATE fiko::core fiko::orkestra fiko::istakip fiko::girdi fiko::baglam fiko::platform fiko::render fiko::sahne fiko::malzeme fiko::parca fiko::parametre fiko::gsd fiko::ui fiko::betik fiko::eklenti fiko::cam fiko::analiz fiko::zeka fiko::dokum fiko::kutuk fiko::strafor fiko::ayar fiko::io fiko::cae fiko::kinematik fiko::simdjson comdlg32 winhttp bcrypt pdh dxgi shell32 winmm ws2_32) # Yigin (stack) rezervini varsayilan 1 MB'dan 16 MB'a yukselt. GorevSistemi worker # thread'leri (std::thread, dwStackSize=0) Windows'ta PE basligindaki SizeOfStackReserve # degerini DEVRALIR — bu yuzden linker seviyesinde ayarlamak TUM thread'leri kapsar. # NEDEN: montaj hiyerarsisi DFS'i (hiyerarsiGez, brep_io.cpp) derin/agir OCCT # nesneleriyle her seviyede genis bir cerceve kullanir; bazi gercek STEP'lerde # (bkz. 17778_a09013_m01_01.stp teshisi) HIYERARSI_MAKS_DERINLIK (300) sinirina # ulasmadan varsayilan 1 MB yigin tukeniyordu. occtSinyalKur()/OSD::SetSignal bunu # GUVENILIR YAKALAYAMAZ (gercek stack-overflow SEH'i, _resetstkoflw olmadan devam # eden ilk derin cagride "resource deadlock would occur" gibi ikincil bir CRT # hatasina donusuyordu). Derinlik/cevrim guard'i (brep_io.cpp) hala PATOLOJIK/ # cevrimsel montajlara karsi asil savunma; bu, gercek-ama-agir montajlar icin ek pay. if(MSVC) target_link_options(fikocad PRIVATE "/STACK:16777216,1048576") endif() # Onceden derlenmis basliklar (PCH): en agir/stabil STL basliklari + core/temel.hpp # tek sefer derlenir → fikocad'in ~40 TU'sunda tekrar tekrar parse edilmez (buyuk # derleme kazanci). Set stabil tutulmali (sik degisen baslik PCH'ye KONMAZ). target_precompile_headers(fikocad PRIVATE "${CMAKE_SOURCE_DIR}/motor/core/include/fiko/core/temel.hpp") # --- CEF (Chromium Embedded Framework) gomulu yardim goruntuleyici --- # Varsayilan KAPALI (SDK gerektirir). Acmak: cmake -DFIKO_CEF=ON. # Runtime: yalniz gerekli DLL'ler exe yanina kopyalanir; CEF'in vulkan-1.dll / # vk_swiftshader'i KOPYALANMAZ (fikocad'in Vulkan loader'iyla cakismasin). Resources # CefSettings ile SDK'dan gosterilir (kopya yok). Wrapper /MD ile derlenmis olmali. option(FIKO_CEF "Gomulu CEF yardim goruntuleyici (CEF SDK gerekir)" OFF) if(FIKO_CEF) if(NOT CEF_ROOT) set(CEF_ROOT "D:/__sistem__/ProgramFiles/cef/cef_binary_150.0.11+gb887805+chromium-150.0.7871.115_windows64" CACHE PATH "CEF SDK koku") endif() target_sources(fikocad PRIVATE yardim_cef.cpp yardim_penceresi.cpp) target_compile_definitions(fikocad PRIVATE FIKO_CEF FIKO_CEF_ROOT="${CEF_ROOT}") target_include_directories(fikocad PRIVATE "${CEF_ROOT}") target_link_libraries(fikocad PRIVATE "${CEF_ROOT}/Release/libcef.lib" "${CEF_ROOT}/build_md/libcef_dll_wrapper/libcef_dll_wrapper.lib") # Gerekli runtime DLL'leri (vulkan-1.dll / vk_swiftshader* / libcef.lib HARIC). set(CEF_RUNTIME libcef.dll chrome_elf.dll d3dcompiler_47.dll dxcompiler.dll dxil.dll libEGL.dll libGLESv2.dll v8_context_snapshot.bin bootstrap.exe bootstrapc.exe) foreach(f ${CEF_RUNTIME}) add_custom_command(TARGET fikocad POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CEF_ROOT}/Release/${f}" "$/${f}" COMMENT "CEF runtime: ${f}") endforeach() # Resources (icudtl.dat + *.pak) exe YANINA — ICU init exe-yani duz yerlesim ister # (resources_dir_path ICU'dan sonra uygulaniyor → fast-fail). Bunlar VERI dosyasi (DLL # degil) → cakisma yok. set(CEF_RES icudtl.dat chrome_100_percent.pak chrome_200_percent.pak resources.pak) foreach(f ${CEF_RES}) add_custom_command(TARGET fikocad POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CEF_ROOT}/Resources/${f}" "$/${f}" COMMENT "CEF resource: ${f}") endforeach() add_custom_command(TARGET fikocad POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different "${CEF_ROOT}/Resources/locales" "$/locales" COMMENT "CEF locales") endif() # --- App-katmani saf protokol testleri (Win32/olay-notr; ag yok) --- add_executable(fikocad_surec_test test/test_main.cpp test/test_surec_kopru.cpp test/test_orkestra_kule.cpp test/test_orkestra_soket.cpp test/test_orkestra_metrik.cpp test/test_orkestra_tcp.cpp test/test_orkestra_eslesme_koprusu.cpp test/test_istakip_ag.cpp orkestra_soket_win.cpp orkestra_metrik.cpp orkestra_tcp_win.cpp orkestra_kripto.cpp istakip_ag.cpp test/test_geri_bildirim.cpp test/test_makro_oneri.cpp test/test_kinematik_io.cpp test/test_kinematik_agac.cpp kinematik_agac.cpp makro_oneri.cpp ) target_include_directories(fikocad_surec_test PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_SOURCE_DIR}/motor/core/include # temel.hpp (u8/u32) — saf tip takimi ${CMAKE_SOURCE_DIR}/motor/cekirdek/include # AgacDugum (kinematik_agac saglayicisi) ${CMAKE_SOURCE_DIR}/motor/core/test) # kinematik_io.hpp saf cevirisi (mekanizma <-> .fikocad POD) burada test edilir. target_link_libraries(fikocad_surec_test PRIVATE fiko::kinematik fiko::io fiko::orkestra fiko::istakip ws2_32 dxgi bcrypt) add_test(NAME surec_kopru COMMAND fikocad_surec_test) # OCCT calisma zamani DLL'leri exe yanina kopyalanir (yalniz degisenler) add_custom_command(TARGET fikocad POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different "${FIKO_VCPKG}/bin" "$" COMMENT "OCCT DLL'leri kopyalaniyor") # Ornek makrolar exe yanindaki makrolar/ dizinine kopyalanir (Makro Konsolu okur) add_custom_command(TARGET fikocad POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different "${CMAKE_CURRENT_SOURCE_DIR}/makrolar" "$/makrolar" COMMENT "Ornek makrolar kopyalaniyor") # Arka plan gorseli (3D gorunum bulut+logo) exe yanindaki resimler/ dizinine kopyalanir add_custom_command(TARGET fikocad POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different "${CMAKE_CURRENT_SOURCE_DIR}/resimler" "$/resimler" COMMENT "Arka plan gorselleri kopyalaniyor") # Kafa (Diagonal/Ozmo) VRML modelleri exe yanindaki assets/3d dizinine kopyalanir # (kafa_penceresi.cpp'deki kafaAssetKok() exe-yanini once arar; boylece proje baska # bir PC'ye/klasore tasinsa bile modeller bulunur — bkz. yardim.cpp'deki ayni kalip). add_custom_command(TARGET fikocad POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different "${CMAKE_SOURCE_DIR}/assets/3d" "$/assets/3d" COMMENT "Kafa 3D modelleri (Diagonal/Ozmo) kopyalaniyor") # Yardim dokumanlari exe yanindaki assets/yardim dizinine kopyalanir (yardim.cpp'deki # yardimKok() exe-yanini once arar; ayni tasima sorunu bunda da vardi). add_custom_command(TARGET fikocad POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory_if_different "${CMAKE_SOURCE_DIR}/assets/yardim" "$/assets/yardim" COMMENT "Yardim dokumanlari kopyalaniyor") set(GLSLC "${FIKO_VULKAN_SDK}/Bin/glslc.exe") set(SHADER_KAYNAK ${CMAKE_SOURCE_DIR}/motor/render/shader) set(SHADER_CIKTI ${CMAKE_CURRENT_BINARY_DIR}/shader) file(MAKE_DIRECTORY ${SHADER_CIKTI}) set(SPV_DOSYALAR "") foreach(S model.vert model.frag secim.vert secim.frag kenar.vert kenar.frag nokta.vert nokta.frag analiz.vert analiz.frag wall.comp golge.vert golge.frag zebra.frag reflect.frag kesit_sayim.vert kesit_sayim.frag kesit_dolgu.vert kesit_dolgu.frag peek.vert peek.frag peek_kenar.vert peek_kenar.frag fikoui.vert fikoui_glow.frag fikoui_aurora.frag kutuk_dexel_kes.comp sdf_kes.comp sdf_mc.comp katilasma_fdm.comp fark_enyakin.comp sph_hash_bucket.comp sph_yogunluk.comp sph_kuvvet.comp sph_entegre.comp) add_custom_command( OUTPUT ${SHADER_CIKTI}/${S}.spv COMMAND ${GLSLC} ${SHADER_KAYNAK}/${S} -O -o ${SHADER_CIKTI}/${S}.spv DEPENDS ${SHADER_KAYNAK}/${S} COMMENT "SPIR-V derleniyor: ${S}") list(APPEND SPV_DOSYALAR ${SHADER_CIKTI}/${S}.spv) endforeach() add_custom_target(fikocad_shaderler DEPENDS ${SPV_DOSYALAR}) add_dependencies(fikocad fikocad_shaderler)