CMake:多个目标使用相同的源文件

use*_*627 5 c cmake

add_library(target1 funtion.c target1.c )
add_library(target2 funtion.c target2.c )
add_executable(main.out main.c) 
target_link_libraries(main.out target1 target2 ${LDFLAGS})
Run Code Online (Sandbox Code Playgroud)

CMakeLists.txt以上是我的。

两个目标都需要使用源文件function.c。虽然它能够运行。我担心的是,这可能不是写作的好行为CMakeList.txt

iva*_*ult 3

无论多次使用同一个源文件都是完全可以的。有时,如果您想使用不同的预处理器/编译器标志编译相同的源代码,这甚至是必要的。

但如果您关心编译时间,您可以:

  • 移动funtion.c到单独的静态库和链接target1以及target2针对它的库。
  • 使用对象库并将function.c输出对象文件归档到target1target2