【发布时间】:2015-12-08 01:29:37
【问题描述】:
我正在我的项目中添加对 gperftools 的支持,以分析 CPU 和内存。 Gperftools 需要为每个二进制文件最后链接库 tcmalloc。
cmake 有没有办法将库附加到我项目的每个二进制目标,而无需编辑每个 CMakeLists.txt?
我在这里发现了一个类似的问题:link library to all targets in cmake project,但它没有回答。建议使用宏来解决这个问题,但没有说明如何实现。
【问题讨论】:
-
你问
Is there a way with cmake...,你提到的问题是comment:There is nothing builtin that removes this.。这只是对您问题的回答。还是您更喜欢正式的答案(而不是评论)? -
它说没有内置任何东西,但为宏等替代方式敞开了大门,我正在考虑这种方式,但还不知道如何正确地做到这一点。
-
我认为您应该首先收集所有现有目标的列表。不幸的是,这是 CMake 的另一个未内置功能 cmake.org/pipermail/cmake/2011-January/042079.html 虽然您似乎可以覆盖标准
add_library命令 cmake.org/pipermail/cmake/2010-September/039388.html -
能否请您添加到目前为止您尝试过的 CMake 代码 sn-ps 以及可能已经为单个目标工作的代码?一种可能性是——除了覆盖
add_executable()——修改/扩展CMAKE_CXX_LINK_EXECUTABLE、CMAKE_CXX_IMPLICIT_LINK_LIBRARIES或CMAKE_STANDARD_LIBRARIES。