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

问题描述 投票:3回答:2
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})

这是我上面的CMakeLists.txt

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

c cmake
2个回答
0
投票

无论多次使用相同的源文件都完全没问题。如果您想使用不同的预处理器/编译器标志编译相同的源,有时甚至是必要的。

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

  • 移动funtion.c分离静态库并链接target1target2库。
  • object library用于function.c并将输出对象文件归档到target1target2

0
投票

要么你没有在你的问题中提供足够的信息,要么将function.c添加到target1target2将无法正常工作,因为你将与main.out链接在一起,因为你将有重复的符号。

如果您确定它们不是重复的符号(例如,因为function.c是使用不同的编译标志构建的),那么您的示例是正确的。

© www.soinside.com 2019 - 2024. All rights reserved.