CMake,清理依赖库不会强制在可执行文件构建中进行重建/链接

时间:2018-08-23 20:15:06

标签: cmake

假设这种简化的目录结构:

+-- DependentLibA
|   +-- CMakeLists.txt
+-- DependentLibB
|   +-- CMakeLists.txt
+-- Exeuctable
|   +-- CMakeLists.txt
+-- CMakeLists.txt

DependentLibA / CMakeLists.txt:

add_library(libA STATIC ${SRCS})

DependentLibB / CMakeLists.txt:

add_library(libB STATIC ${SRCS})

Exeuctable / CMakeLists.txt:

add_executable(mainexe ${SRCS})
target_link_libraries(mainexe PUBLIC
    libA
    libB
)

CMakeLists.txt:

add_subdirectory(DependentLibA)
add_subdirectory(DependentLibB)
add_subdirectory(Executable)

以上文件假定设置了其他不重要的设置。

如果从root /目录执行make clean && make,则一切正常。然后,如果我cd DependentLibA && make clean会正确清理该目录,包括删除libliba.a文件。

但是,如果我回到root /目录并执行make,则什么也没有发生,因为它已经认为一切都完成了。我希望“ Executable”项目取决于现有的libliba.a文件,但它似乎无法正常工作。我认为target_link_libraries()命令将建立在该依赖关系中。我是否需要更改链接库的方式?还是我需要添加其他命令?

CMake 2.8.10或更高版本是可以的。

0 个答案:

没有答案