随着CMake的,如果我们想用相同的主要功能创建不同的可执行文件,我们可以创建一个包含主函数库(这是在main.cpp
,说了)并将其链接到所有高管:
add_library(main_lib main.cpp)
add_executable(exe1 source1.cpp)
target_link_libraries(exe1 main_lib)
等等其他可执行文件。 通过这种方式,但是,我们必须为每个高管至少一个源文件。 如果我们没有源文件,只需要使用不同的库链接的高管?
add_executable(exe1) #(1)
target_link_libraries(exe1 some_lib1 main_lib)
不幸的是,CMake的不允许(1)
有一个Object Library
,我们可以使用:
add_library(main_lib OBJECT main.cpp)
add_executable(exe1 $<TARGET_OBJECTS:main_lib>) #(2)
target_link_libraries(exe1 some_lib1)
但(2)
产生以下:
CMakeFiles/main_obj.dir/test_caffe_main.cpp.o: In function `main':
test_caffe_main.cpp:(.text+0x0): multiple definition of `main'
CMakeFiles/test_caffe_main.testbin.lib.dir/test_caffe_main.cpp.o:test_caffe_main.cpp:(.text+0x0): first defined here
我们怎样才能重新使用包含在不同的可执行文件主要功能时,有没有其他的源文件,目标文件?
编辑:对象库可以非常好地主要功能。 原来我也有一个错误的第二主。 对不起,张贴!