C++ cmake:未能链接到google profiler(GPerTools)
我在ubuntu 16.04上 以下是我所做的:C++ cmake:未能链接到google profiler(GPerTools),c++,cmake,profiler,catkin,gperftools,C++,Cmake,Profiler,Catkin,Gperftools,我在ubuntu 16.04上 以下是我所做的: 已安装的GPERF工具: sudo apt-get install google-perftools libgoogle-perftools-dev 已从以下位置下载FindGperftools.cmake: 将FindGperftools.cmake重命名为GperftoolsConfig.cmake,并将其放置在我的软件包中的cmake文件夹中 添加到CMakelists.txt: set (Gperftools_DIR "${CMAKE
sudo apt-get install google-perftools libgoogle-perftools-dev
FindGperftools.cmake
重命名为GperftoolsConfig.cmake
,并将其放置在我的软件包中的cmake
文件夹中CMakelists.txt
:
set (Gperftools_DIR "${CMAKE_CURRENT_LIST_DIR}/cmake/")
find_package(Gperftools REQUIRED)
target_link_libraries(my_executable ${GPERFTOOLS_PROFILER})
./my_executable
export CPUPROFILE=/my_path/prof.out
target_link_libraries(my_executable ${GPERFTOOLS_PROFILER})
./my_executable
/my\u path/prof.out
如果我在“我的可执行文件”上运行“ldd”,它不会显示与探查器的任何链接(ldd./my_可执行文件| grep profil
不会产生任何结果)。
然而,当查看build文件夹中的文件时,编译器似乎会进行链接(-lprofile
)
有什么我可能忘记的吗
注意:不确定它是否相关,但我使用的是柳絮。这看起来像ubuntu的(非标准)链接器功能,不链接那些不直接使用符号的库。尝试根据需要将-Wl,-no添加到您的LDFLAGS中(并确保在-lprofiler之前传递它)。可能这与问题无关,但将“Find”脚本重命名为“Config”one并不是CMake的常见用法:虽然这些脚本的用途类似,但它们在不同的“环境”中运行。例如,“查找”脚本中使用的
find\u package\u handle\u standard\u args
在“配置”脚本中没有意义。对于find“find”脚本本身,设置CMAKE\u MODULE\u PATH CMAKE变量。是否可能定义了错误的变量?在您提供的链接中,有一条评论说Gperftools\u ROOT\u DIR
将此变量设置为Gperftools的ROOT安装
,这与您的答案中的Gperftools\u DIR
不同