假设我有两个源文件A
和B
。每个人都有主要和公共职能。
A B
|__ main() |__ main()
|__ foo() |__ bar()
我想bar
方法使用foo
功能。如何在CMake项目中进行编译?
有了这个配置,B
obviusly不知道A
的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
,并A main
在两个不同的文件。也许使用C ++标头?
拆分A
成两个源文件:
其中一个包含main
函数,并且由A
可执行目标而不是库使用。
其中一个包含foo
函数,A_lib
库目标使用该函数。
然后将库也用作A
可执行目标。
这是IMO的“最佳”解决方案。
您可以使用预处理程序宏有条件地编译中的main
函数A.cpp
。但这并不是我真正推荐的东西。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句