【发布时间】:2018-03-04 12:01:17
【问题描述】:
我在 ubuntu 16.04 上。
我做了什么:
-
已安装 gperftools:
sudo apt-get install google-perftools libgoogle-perftools-dev 从https://github.com/vast-io/vast/blob/master/cmake/FindGperftools.cmake下载了 FindGperftools.cmake
将
FindGperftools.cmake重命名为GperftoolsConfig.cmake并将其放在我的包中的cmake文件夹中-
添加到
CMakelists.txt:set (Gperftools_DIR "${CMAKE_CURRENT_LIST_DIR}/cmake/") find_package(Gperftools REQUIRED) -
在同一个 CMakelists.txt 中,链接我的可执行文件:
target_link_libraries(my_executable ${GPERFTOOLS_PROFILER}) -
在终端中,导出 CPUPROFILE 环境变量:
export CPUPROFILE=/my_path/prof.out -
在同一终端中,运行可执行文件:
./my_executable
没有错误信息,但是没有创建日志文件/my_path/prof.out。
如果我在“my_executable”上运行“ldd”,它不会显示与分析器的任何链接(ldd ./my_executable | grep profil 不会产生任何结果)。
然而,当查看 build 文件夹中的文件时,编译器似乎进行了链接(-lprofile 在那里)。
我可能忘记了什么?
注意:不确定是否相关,但我使用的是 catkin。
【问题讨论】:
-
可能与问题无关,但是将“Find”脚本重命名为“Config”并不是 CMake 的常见用法:虽然这些脚本的目的相似,但脚本运行在不同的“环境”。例如,“查找”脚本中使用的
find_package_handle_standard_args在“配置”脚本中没有意义。对于查找“查找”脚本本身,请设置 CMAKE_MODULE_PATH CMake 变量。 -
您是否定义了错误的变量?在您提供的评论链接中,
Gperftools_ROOT_DIRSet this variable to the root installation of Gperftools与您的回答中的Gperftools_DIR不同
标签: c++ cmake profiler catkin gperftools