假设我有两个源文件A和B.每个文件都有一个main和一个public函数.
A B
|__ main() |__ main()
|__ foo() |__ bar()
我想要bar方法来使用foo函数.如何在CMake项目中编译它?
通过这种配置,B显然不知道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)
这种配置显然主要是两种定义.
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的“最佳”解决方案.
您可以使用预处理器宏有条件地编译A.cpp中的main函数.但这不是我推荐的东西.