Github 我可以阻止或跳过来自第三方回购的add_可执行文件吗?cmakeftchcontent\u声明
当使用cmake包含第三方回购时,clion中的列表将显示所有可执行文件和测试。尽管discord建议使用Github 我可以阻止或跳过来自第三方回购的add_可执行文件吗?cmakeftchcontent\u声明,github,cmake,Github,Cmake,当使用cmake包含第三方回购时,clion中的列表将显示所有可执行文件和测试。尽管discord建议使用将您排除在所有之外,这会有所帮助。因为当我构建所有的时候,它会阻止这些额外的东西构建 我想要的只是图书馆。跳过第三方cmake文件中的添加可执行文件行 如果我有一个与它们同名的可执行文件,它将显示一个错误,例如: add_可执行文件无法创建目标“ut_1”,因为另一个目标具有 已存在相同的名称。现有目标是一个可执行文件 在源目录中创建 大宗报价 不幸的是,这是FetchContent方法的一
将您排除在所有之外,这会有所帮助。因为当我构建所有的时候,它会阻止这些额外的东西构建
我想要的只是图书馆。跳过第三方cmake文件中的添加可执行文件行
如果我有一个与它们同名的可执行文件,它将显示一个错误,例如:
add_可执行文件无法创建目标“ut_1”,因为另一个目标具有
已存在相同的名称。现有目标是一个可执行文件
在源目录中创建
大宗报价
不幸的是,这是FetchContent方法的一个基本限制。一旦目标被添加,CMake就不提供删除目标的方法,FetchContent最终是对add_子目录
的调用,它无法区分第一方目标和第三方目标
您唯一的办法是修补第三方构建。您可以通过分叉项目、尝试使用glitchy选项,或者通过与上游协作来命名其目标的名称空间来实现这一点
在设计要由FetchContent使用的库时,应始终使用\uu
前缀(或仅使用
)。好的,谢谢您提供的信息。我将确保在我的库中使用前缀,并且从现在开始。有人说可以让您将add_子目录中的任何内容放入名称空间。这应该会派上用场。虽然它已经工作了4年。由于从所有中排除\u,因此不再构建可执行文件,那么到底是什么问题?您是否因为所有外部项目的可执行文件都显示在CLion的目标列表中而更难找到您的可执行文件而感到恼火,还是因为您无法重用外部项目中使用的名称?因为取决于CLion如何实现他们的列表,第一个问题可能是可以解决的。我刚才还检查了您在这里用作示例的ut
项目,它具有禁用添加测试、示例和基准可执行文件的选项。许多项目都有这样的选项,可以在不总是需要的情况下禁用部分项目。你找过这样的选择吗?我会查出来的。非常感谢。
enable_testing()
include(FetchContent)
FetchContent_Declare(
ut
GIT_REPOSITORY https://github.com/boost-ext/ut.git
GIT_TAG v1.1.8
)
#FetchContent_MakeAvailable(ut)
FetchContent_GetProperties(ut)
if(NOT ut_POPULATED)
FetchContent_Populate(ut)
add_subdirectory(${ut_SOURCE_DIR} ${ut_BINARY_DIR} EXCLUDE_FROM_ALL)
endif()