0

我有一个使用 CMake 在 Linux、MacOSX 和 Windows/Visual Studio 上构建的 C++ 应用程序。现在,我想透明地替换mallocby的使用tcmalloc,因为之前在 Linux 中的测试显示 TAT 的改进高达 15%。

为此,我在我的 CMake 文件中添加了这些设置:

find_library(GPERF_MEM libtcmalloc_minimal PATH "C:\\tmp\\gperf")
add_executable(MY_APP ${MY_APP_SRCS})
target_link_libraries(MY_APP ${GPERF_MEM})

C:\tmp\gperf是我的 PC 中我放置libtcmalloc_minimal.dll文件和相关libtcmalloc_minimal.lib导入库的路径)。

但是,dumpbin /dependents MY_APP.exe根本不显示libtcmalloc_minimal.dll(因为它确实显示了我的应用程序使用的其他 DLL)。但是,在 Linux/MacOSX 中使用相同的 CMakeLists.txt(当然,库搜索路径有明显的变化)ldd/otool确实显示了对libtcmalloc_minimal.so/dylib

所以我的问题是:

为了强制使用 tcmalloc 提供的 malloc 实现而不是标准实现,我在 Windows 中缺少什么?

tcmalloc 文档讨论了有关直接从 Visual Studio 修改项目文件的一些内容,但这在我的情况下并不是真正适用的解决方案(由于 CMake,所有构建过程都在脚本中自动化,我什至从未打开 Visual Studio 界面进行其他任何操作比调试)。

非常感谢你的帮助。

4

0 回答 0