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

圣地亚哥·吉尔

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

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

我想bar方法使用foo功能。如何在CMake项目中进行编译?

有了这个配置,Bobviusly不知道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)

有没有办法实现我想要的?我想不是两个电网合并或分开foo,并A main在两个不同的文件。也许使用C ++标头?

一些程序员哥们

拆分A成两个源文件:

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

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

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

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Scrapy:抓取共享相同项目,管道和设置但具有单独输出的多个蜘蛛

c ++ 17的charconv是否具有cmake编译功能?

聚合和具有多个条件的项目

多个div(某些具有和不具有背景附加功能:固定)共享背景图像/具有background-size属性的奇怪结果

编译具有多个版本的依赖项的项目

如何在具有多个电源的单个模块项目中设置sbt-native-packager

在CMake中的多个项目之间共享ExternalProject

Git:在多个分支上具有相同功能,但在主分支上不具有

CMake生成的具有系统和标准的c ++项目包括

具有多个模块和多个程序集的Maven项目

如何使用 AJAX 更新共享点列表上具有共享客户编号的多个项目?

具有可选功能,泛型和类似功能的功能确实满足编译器要求

如何使用CMake从一个主CMake项目构建多个平台而没有缓存问题

具有多个可执行文件的CMake共享库

使用libuv和CMake编译项目

具有多个输入和输出的fplot功能

具有功能和技巧的多个参数

如何拟合具有共享和非共享参数组合的多个数据集

具有多个项目和库的角度构建过程

具有多个 exe 和 libs 的 zig 项目

具有单个架构和多个项目的Flyway迁移

具有多个名称的功能

具有共享模块的多平台项目

具有多个主分支的Gitflow

如何正确组织具有多个子目录的 CMake 项目?

不使用Visual Studio IDE将具有多个DLL文件的项目编译为单个EXE

具有多个功能和多个布局文件的Android单一活动是否有效?

空手道:具有结果和共享上下文的通话功能

具有枚举特定实现和共享功能 (CRTP) 的类模板