gpt4 book ai didi

c++ - CMake编译项目具有多个主干和共享功能

转载 作者:太空狗 更新时间:2023-10-29 20:21:34 34 4
gpt4 key购买 nike

假设我有两个源文件AB。每一个都有一个主要的和一个公共(public)的功能。

A                 B
|__ main() |__ main()
|__ foo() |__ bar()

我希望bar 方法使用foo 函数。我如何在 CMake 项目中编译它?

使用这种配置,B 显然不知道Afoo 函数。

cmake_minimum_required(VERSION 3.5)
project(My_project)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14 -O3")

add_executable(A A.cpp)
add_executable(B B.cpp)

此配置显然包含 main 的两个定义。

cmake_minimum_required(VERSION 3.5)
project(My_project)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14 -O3")

set(SOURCE_FILES A.cpp)
add_library(A_lib STATIC ${SOURCE_FILES})

add_executable(A A.cpp)
add_executable(B B.cpp)

target_link_libraries(B A_lib)

有没有办法实现我想要的?我不想合并两个主电源,或者将 fooA main 分开放在两个不同的文件中。也许使用 C++ header ?

最佳答案

A分成两个源文件:

  • 一个包含 main 函数,由 A 可执行目标而不是库使用。

  • 一个包含 foo 函数,由 A_lib 库目标使用。

然后也将库用于 A 可执行目标。

这是 IMO 的“最佳”解决方案。

可以使用预处理器宏有条件地编译A.cpp 中的main 函数。但这并不是我真正推荐的东西。

关于c++ - CMake编译项目具有多个主干和共享功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43278912/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com