CMake包含多个主电源和共享功能的编译项目

时间:2017-04-07 13:03:43

标签: c++ compilation cmake

假设我有两个源文件AB。每个人都有主要和公共功能。

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

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

使用此配置,B显然不了解A的{​​{1}}功能。

foo

此配置显然具有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) foo分隔在两个不同的文件中。也许使用C ++标题?

1 个答案:

答案 0 :(得分:6)

A拆分为两个源文件:

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

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

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

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

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