
Wed, 01/08/2025 - 18:46
Forums:
Hi,
I updated to the latest commit (3d6c211) in master branch, and encountered a new problem compiling the OCCT solution.
I was able to compile before with the same settings in Windows with Visual Studio 2022:
BUILD_CPP_STANDARD C++20
BUILD_USE_PCH Yes
BUILD_MODULE_ApplicationFramework Yes
BUILD_MODULE_DETools Yes
BUILD_MODULE_DataExchange Yes
BUILD_MODULE_Draw No
BUILD_MODULE_FoundationClasses Yes
BUILD_MODULE_ModelingAlgorithms Yes
BUILD_MODULE_ModelingData Yes
BUILD_MODULE_Visualization No
USE_DRACO Yes
USE_MMGR_TYPE JEMALLOC
USE_RAPIDJSON Yes
INSTALL_JEMALLOC Yes
INSTALL_RAPIDJSON Yes
USE_D3D No
USE_FFMPEG No
USE_FREEIMAGE No
USE_FREETYPE No
USE_OPENGL No
USE_OPENVR No
USE_TBB No
All the relevant 3rd party directories are found:
3RDPARTY_JEMALLOC_DIR
3RDPARTY_JEMALLOC_INCLUDE_DIR
3RDPARTY_JEMALLOC_LIBRARY_DIR
3RDPARTY_DRACO_DIR
3RDPARTY_RAPIDJSON_DIR
etc
But under "Linker -> General -> Additional Library Directories" (i.e. for TKernel) the folder for the Jemalloc library dir doesn't appear, which leads to a:
LINK : fatal error LNK1104: cannot open file 'jemalloc.lib' when building.
On the other hand, the folder for Draco library does appear.
Is this currently broken, or am doing something wrong?
Wed, 01/08/2025 - 20:23
Thank you. I can reproduce. My apologies. It is a regression. Will be fixed on current week.
Best regards, Dmitrii.
Thu, 01/09/2025 - 18:03
The fix: Configuration - Library CSF directory separation
Thu, 01/09/2025 - 19:12
Thanks Dmitrii for the quick response!
In the meantime, I tried compiling with the native memory management. But I ran into another problem. I was able to build, but a lot of headers were missing from the inc dir in the OCCT installation folder, which breaks my program (i.e. OSD.hxx is missing, which is a fairly basic header AFAIK)
I bisected and found that commit 33c22d1 seems to have broken this. The previous commit (abf2e1b) produced more than 7000 headers files in the inc folder, while the problematic commit only has around 400 headers.
Thu, 01/09/2025 - 19:50
Oh. Hm. Thank you. Looks like our internal test system have caching the headers and that is why I didn't find an error. Thank you! I will fix it during today.
Thank you a lot!
Thu, 01/09/2025 - 21:03
Fix: Configuration - Headers are missed during installing
Wed, 01/22/2025 - 12:46
Hey Dmitrii, is it possible this wasn't completely fixed?
While jemalloc.lib is now added to the link list, and all the headers are copied, what I don't see being copied is the jemalloc.dll to the install dir.
Wed, 01/22/2025 - 13:44
Hello. Copying of depenencies are not stable thing. I would recommend to have special PATH specification (based on 3RDPARTY_DIR) for your project or use -DINSTALL_JEMALLOC=ON
On our test system and internal usage we do not copy DLL to the bin location. That is why it is difficult to validate. We are welcoming your reports in case if INSTALL_JEMALLOC is not working.
Best regards, Dmitrii.
Wed, 01/22/2025 - 14:12
I have all paths and settings enabled:
The lib and include files are ok, it's just the DLL that is not being copied.
Other DLLs like tcl86.dll and tk86.dll are copied.
I think this is a regression since it was being copied before.
Wed, 01/22/2025 - 14:59
Thank you. I will check and will fix it in during current week.
Wed, 01/22/2025 - 15:51
I just found where the problem is. I can create a PR to fix it.
Wed, 01/22/2025 - 16:03
PR: 281