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

时间:2017-12-27 07:14:19

标签: c cmake

<View
    android:elevation="3dp"
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:background="#ff0000"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    />

以上是我的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可能不是一个好的行为吗?

2 个答案:

答案 0 :(得分:0)

要么您在问题中没有提供足够的信息,要么将function.c添加到target1target2将无法使用main.out将它们链接在一起,因为您将有重复的符号。

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

答案 1 :(得分:0)

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

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

  • 移动funtion.c以分隔静态库,并将target1target2库链接起来。
  • object library用于function.c并将输出对象文件存档到target1target2