我有一个使用 CMake 在 Linux、MacOSX 和 Windows/Visual Studio 上构建的 C++ 应用程序。现在,我想透明地替换malloc
by的使用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 界面进行其他任何操作比调试)。
非常感谢你的帮助。