我有3个小的依赖工具:
main-tool/
tool1/
tool2/
* ----- main-tool ----- *
| |
tool1 ---------- > tool2主工具依赖于tool1 & tool2。
tool1依赖于tool2。
CMakeFiles如下所示:
main-tool/CMakeLists.txt
SUBDIRS{"tool1"}
SUBDIRS{"tool2"}
main-tool/tool1/CMakeLists.txt
SUBDIRS("../tool2"}我可以很顺利地编译tool1。然而,每当我想编译main-tool时,tool2就会包含两次,并产生错误。我怎样才能避免这种情况?
谢谢。
发布于 2010-02-10 06:53:14
首先,您应该使用add_subdirectory()而不是deprecated的subdirs()。通过这种方式,您可以更精确地控制处理顺序。
其次,因为一切都依赖于tool2,所以您应该首先构建tool2。
main-tool/CMakeLists.txt:
add_subdirectory{"tool2"}
add_subdirectory{"tool1"}不要在tool1目录中添加另一个add_subdirectory命令。有两种方法可以用来从tool1构建中访问tool2。
cmake
set这些变量。然后使用这些变量从tool2 subdirectory.
总而言之,我的建议是“一个大的CMakeLists.txt文件”。除非它变得非常非常大。
发布于 2009-12-23 23:08:33
你真的应该只对子目录使用SUBDIRS。你所说的依赖到底是什么意思?如果您使用TARGET_LINK_LIBRARIES将一些库链接在一起,CMake将在您的项目目录中找到它们。如果它是运行时依赖项,您通常只在安装后才关心它,或者您可以使用"${CMAKE_CURRENT_BINARY_DIR}/../tool2/tool2"作为二进制文件的路径。
https://stackoverflow.com/questions/1909783
复制相似问题