0

我创建了一个 C++ 类,在其中使用getrusage getrusage(RUSAGE_SELF, &usage)计算 CPU 使用率。

我可以成功创建并链接shared library .so我创建的一个,但是,我想 shared.so在其他一些外部项目中使用同一个库。例如,如果我想将此链接.so到在不同项目中生成的二进制文件。

这是我从源文件CMakeLists.txt创建共享库的方法。libcpp_cpu_usage_library.so${PROJECT_SOURCE_DIR}/src/cpu_usage.cpp

CMakeLists.txt 生成共享库

############################################################
# Find CMake, Compiler Version, and OS
############################################################
cmake_minimum_required(VERSION 3.15)
project(cpp_cpu_usage VERSION 1.0.1 DESCRIPTION "cpp_cpu_usage description")
set(CMAKE_CXX_STANDARD 20)

message(STATUS "CMake version   : " ${CMAKE_SYSTEM_VERSION})
message(STATUS "Compiler        : " ${CMAKE_CXX_COMPILER})
message(STATUS "Operating System: " ${CMAKE_SYSTEM})
message(STATUS "SYSTEM PROCESSOR: " ${CMAKE_SYSTEM_PROCESSOR})

############################################################
# Create a library cpp_cpu_usage_library  [.so]
############################################################
#Generate the shared library from the library sources
add_library(cpp_cpu_usage_library SHARED
        ${PROJECT_SOURCE_DIR}/src/cpu_usage.cpp
        )
add_library(cpp_cpu_usage::library ALIAS cpp_cpu_usage_library)


target_include_directories(cpp_cpu_usage_library
        PUBLIC
        ${PROJECT_SOURCE_DIR}/include
        )

############################################################
#  Create a executable for cpp-cpu-usage
############################################################
# Add an executable with the above sources
add_executable(cpp_cpu_usage_binary
        ${PROJECT_SOURCE_DIR}/src/main.cpp
        )

############################################################
# Target Link Libaries
############################################################
# link the cpp_cpu_usage_library target with the cpp-cpu-usage target
target_link_libraries(cpp_cpu_usage_binary
        PRIVATE
        cpp_cpu_usage::library
        )

问题

它与cpp_cpu_usage_binary生成到同一个 CMake 项目的二进制文件一起使用,但是,现在我想使用它libcpp_cpu_usage_library.so是一些外部 CMake 项目。

例如,我想在外部 C++ 和 CMake 项目中使用该共享库。

#include <iostream>
using namespace cpu_usage;

int main(int argc, char** argv)
{
  double utime;
  double stime;
  double cputime;

  CpuUsage::cpu_start();
  delay();
  CpuUsage::cpu_end();

  
  printf("utime [getrusage]: %f\n", utime);
  printf("stime [getrusage]: %f\n", stime);
  printf("cputime [getrusage]: %f\n", cputime);

  return 0;
}

我知道我必须将上面的二进制文件链接到,libcpp_cpu_usage_library.so但是如何安装libcpp_cpu_usage_library.sousr/local/libroot然后包含并链接到我的外部 CMake 项目中。

感谢并期待。

阿尔斯兰

4

0 回答 0