- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
TLDR: 我想让 CMake 等待 ExternalProject_Add
完成,然后再尝试移动到下一个子目录并构建一个恰好使用一个的库外部项目的文件。换句话说,我喜欢将外部项目声明为共享库的依赖项。
更多说明:
假设我的 CMake 项目有两个目录:thirdparty
和 src
。我的顶级 CMakeLists.txt
文件有:
add_subdirectory(thirdparty)
add_subdirectory(src)
thirdparty/CMakeLists.txt
包含多个 ExternalProject_Add
命令。我的初衷是拉取并构建所有这些外部项目,然后继续在 src
中构建我自己的库和可执行文件。不幸的是,这并没有按我的计划进行:
我的一个外部项目叫做 libsvm
。我的 src/CMakeLists.txt
具有以下内容:
set(Libsvm_SOURCE_FILES
${PROJECT_BINARY_DIR}/thirdparty/libsvm/src/libsvm/svm.cpp
)
include_directories(
${Libsvm_INCLUDE_DIR}
)
add_library(
mysvm
SHARED
${Libsvm_SOURCE_FILES}
)
现在我面临的问题是 CMake 无法找到 ${Libsvm_SOURCE_FILES},显然是因为这一步是在我的 thirdparty/CMakeLists.txt< 中的
文件被执行。ExternalProject_Add
之前执行的
我想将此外部项目声明为此库的依赖项。
更广泛的问题:有没有一种干净的方法可以强制 CMake 在移动到下一个子目录之前完成第一个子目录中的所有内容?如果不是,您是否建议我对 CMakeLists 文件的层次结构和组织进行任何更改?
谢谢!
最佳答案
CMake 期望传递给 add_library
或 add_executable
的每个源文件都存在,除非它被标记为 GENERATED .对于 add_custom_command
,此属性是自动为列为 OUTPUT 的文件设置的。在其他情况下,需要显式设置此属性:
set_source_files_properties(${Libsvm_SOURCE_FILES} PROPERTIES GENERATED TRUE)
关于c++ - CMake make add_library 依赖于 ExternalProject_Add,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47812230/
我想弄清楚 this 到底是什么行是在这个 github json 项目的 cmake 文件中, add_library(${NLOHMANN_JSON_TARGET_NAME} INTERFACE)
我正在尝试运行 cmake 来生成 makefile。在最小的工作示例中,我有三个文件和 1 个构建目录。 文件 1 是 CMakeLists.txt,其中包含: add_library (MathF
我正在设计一组可以在我的其他 C++ 项目中链接的库。为了使馆藏易于使用,我希望能够链接到各个图书馆,或者链接到一个包含所有其他图书馆的主图书馆。我如何在 CMakeLists.txt 文件中指定它?
我正在使用 CMake add_library 命令构建一个共享库,如下所示: add_library(mylibname OPTION SHARED SOURCES ${source_files}
我在 github 上编写/维护了一个小型单元测试库 https://github.com/acgreek/ExtremeCUnit使用 cmake 构建。您可以在 checkout 后通过“cmak
我正在使用 add_library 在 CMAKE 中导入静态库.lib 导入正常。但我也想验证这一点。所以我这样做: add_library(MYLIB STATIC IMPORTED) set_t
我有一个只有标题的库项目。在我的 CMakeLists.txt 我使用 INTERFACE 库类型 我想将此项目导入 CLion,但是当我打开任何头文件时,IDE 会提示 此文件不属于任何项目目标 那
库至少需要 cpp14,但如果 cpp17 可用,它会解锁更多功能。我尝试了以下。 cmake_minimum_required(VERSION 3.10) project(dummy) add_li
我正在尝试使用来自库 https://github.com/trusch/libbcrypt 的 crypt blowfish 项目的 c 包装器还有一个 cpp 包装器围绕两个文件 bcrypt.c
TLDR: 我想让 CMake 等待 ExternalProject_Add 完成,然后再尝试移动到下一个子目录并构建一个恰好使用一个的库外部项目的文件。换句话说,我喜欢将外部项目声明为共享库的依赖项
Windows 64bit使用cmake编译c++项目:github.com/iHateInventNames/synergy-through-usb 我在这篇文章中修复了之前的一个问题:Compil
我有一个使用 CMake 作为构建工具的项目,并为我和我的同事制作了一个简单的模板。当我在网上搜索最佳且易于使用的实践时,我遇到了创建库的不同方法。 在这个模板中,我在两个单独的变量中列出了头文件和源
我正在尝试从一组 .cs 文件构建 CSharp DLL。我使用 add_library() 函数添加源文件(.cs 文件)。但它发出警告,如“add_library for library libn
我将我的凭据 key 存储在一个 cpp 原生文件中并使用 CMake 构建然后将其链接到我的应用程序: 当前代码: 我的 src/main/cpp/credentials-provider-dev.
CMake是2.8.8在编译时引入了OBJECT库类型:add_library(OBJECT)。这是一个有用的构造,能够将所有类编译为 .o 文件,但还没有将它们添加到库中。 但是,我不确定它最终附加
使用语句的目的是什么: add_library( [SHARED|STATIC] IMPORTED) 根据我的发现,即使您在上面创建了一个导入的库目标,您仍然需要指定实际 .so 或 .a 的具体位置
我正在学习 CMake,但有点吃力。我的“项目”正在使用以一个 .cpp 文件和两个 .h 文件的形式提供的 JsonCpp“库”。结构如下所示: myProject build/ j
我正在尝试为所有具有特定结尾的文件调用 add_library。 目录结构是: src | - CMakeLists.txt (1) | - main.cpp | - gui | -
我们使用 CMake 和普通的 Unix 生成文件进行构建。有一些静态分析检查,例如Cppcheck ,我们在项目中的每个 C/C++ 文件中运行以在编译时捕获错误。 我为 cppcheck 创建了一
我想向我在 Windows 7 中使用 Visual Studio 2013 Update 2 的 cmake 项目添加一个仅 header 目录。我做了一些研究并提出了这个 Cmakelists.t
我是一名优秀的程序员,十分优秀!