- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有 2 个可执行项目,每个项目都依赖于一个解决方案中的 2 个库(root CMakeLists.txt
)。构建没问题,结果我有 2 个库和 2 个可执行文件。但是,当我尝试在 Qt Creator 中打开根 CMakeLists.txt
而不是 4 个项目(src1、src2、subproject1、subproject2
)和 CMakeLists.txt
结果在根目录中,我只有 1 个名为 "Project"
的项目,其中包括我在 "Project"
容器中的 4 个项目,就像这样包含文件夹。
我也无法选择要运行的项目(Set project "Project"as Active Project
),因为这只是一个项目。从 Qt 运行后,运行了 MainProject1
。
StackOverflow 和谷歌提议为此使用 add_subdirectory
但这不起作用。在我的 CMakeLists
中,make depends 和几个我已经使用过的项目 add_subdirectory
。
Qt version: 5.7.0.
Qt Creator version: 4.0.2.
Ubuntu
请帮我解决这个问题。提前致谢。
root
src1 (executable which depends from subproject1 and subproject2)
CMakeLists.txt
main.cpp
src2 (executable which depends from subproject1 and subproject2)
CMakeLists.txt
main.cpp
subproject1 (library)
CMakeLists.txt
hellow.cpp
hellow.h
subproject2 (library)
CMakeLists.txt
hellow.cpp
hellow.h
CMakeLists.txt (the root CMakeLists)
mkdir -p build && cd build && cmake .. && make &&
ll src1/MainProject1 && ll src2/MainProject2 && ll subproject1/libsubproject1.a && ll subproject2/libsubproject2.a
-rwxrwxr-x 1 qqq qqq 13570 Jun 1 10:45 src1/MainProject1*
-rwxrwxr-x 1 qqq qqq 13570 Jun 1 10:45 src2/MainProject2*
-rw-rw-r-- 1 qqq qqq 2820 Jun 1 10:45 subproject1/libsubproject1.a
-rw-rw-r-- 1 qqq qqq 2828 Jun 1 10:45 subproject2/libsubproject2.a
一切正常
cmake_minimum_required(VERSION 2.8)
add_subdirectory( src1 )
add_subdirectory( src2 )
cmake_minimum_required(VERSION 2.8)
project(subproject1)
set (sources
./hellow.cpp
./hellow.h
)
add_library(subproject1 STATIC ${sources})
是相同的,但不是 subproject1
: subproject2
cmake_minimum_required(VERSION 2.8)
project(MainProject1)
set (sources
./main.cpp
)
if (NOT TARGET subproject1)
add_subdirectory( ./../subproject1 "${CMAKE_CURRENT_BINARY_DIR}/../subproject1" )
add_subdirectory( ./../subproject2 "${CMAKE_CURRENT_BINARY_DIR}/../subproject2" )
endif()
add_executable(MainProject1 ${sources})
target_link_libraries (MainProject1 subproject1)
target_link_libraries (MainProject1 subproject2)
add_dependencies( MainProject1 subproject1 )
add_dependencies( MainProject1 subproject2 )
相同但 MainProject1
: MainProject2
打开根 CMakeLists.txt 并在构建文件夹中配置构建。
root
Project
CMakeLists.txt
src1
src2
subproject1
subproject2
root
src1
src2
subproject1
subproject2
CMakeLists.txt
cd build && ll src1/MainProject1 && ll src2/MainProject2 && ll subproject1/libsubproject1.a && ll subproject2/libsubproject2.a
-rwxrwxr-x 1 qqq qqq 38670 Jun 1 11:10 src1/MainProject1*
-rwxrwxr-x 1 qqq qqq 38670 Jun 1 11:10 src2/MainProject2*
-rw-rw-r-- 1 qqq qqq 21900 Jun 1 11:10 subproject1/libsubproject1.a
-rw-rw-r-- 1 qqq qqq 21908 Jun 1 11:10 subproject2/libsubproject2.a
构建没问题。
MainProject1
已运行。无法选择要运行的项目,因为 Qt Creator 将根 CMakeLists
视为只有一个项目。
最佳答案
我会按以下方式构建您的项目:
根 CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
project(MyComplexProject)
add_subdirectory( src1 )
add_subdirectory( src2 )
add_subdirectory( subproject1 )
add_subdirectory( subproject2 )
src1/CMakeLists.txt
set (sources
./main.cpp
)
add_executable(MainProject1 ${sources})
target_link_libraries (MainProject1 subproject1 subproject2)
subproject1/CMakeLists.txt
set (sources
./hellow.cpp
./hellow.h
)
add_library(subproject1 STATIC ${sources})
请对src2/CMakeLists.txt和subproject2/CMakeLists.txt进行等价修改。
注意:只有顶级 CMakeLists.txt 包含项目定义。其他 CMakeList 仅包含目标定义。
target_link_libraries 默认添加对 lib 目标的依赖。所以它不需要明确地完成。
通过将带有 target_link_libraries 的依赖项添加到可执行目标,CMake 能够计算出正确的构建顺序。
编辑:
看看是否How to load cmake script with more than one project with Qt Creator进一步帮助您。
关于c++ - 如何配置项目的 CMakeLists.txt 文件以在 Qt Creator 中将项目分开而不是一个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44303627/
我像那样遍历数组。 NSArray *array = [[currentRaum raumattribute] allObjects]; NSString *compositeString =
我想找到所有引用这种模式的子字符串:一些字符+一些字符+第一个字符。现在我在 Python 2.7 中有了这个: T = "i was here" m = re.findall(r"([a-z])[a
我想使用与 tidyr 分开将一列字符串(例如 [1, 58, 10] )分成几列。我的问题是有时列较短(永远不会更长)。我在同一个数据框中有很多列有这个问题。 加载包 require(tidyr)
我正在开发一个具有图形用户界面的网络测试工具。我现在面临的问题是,我无法将基础数据与 GUI 类分开。该应用程序由一个 QMainWindow 组成,它随后生成多个其他 QDialogs 并具有一些
我经常听到“策略与机制分离”的口头禅,尤其是在 Unix 哲学的背景下。这是什么意思,有哪些具体的例子?什么时候/为什么是/不是一件好事? 最佳答案 它基本上是将需求或业务功能与技术实现分离。机制是技
我正在使用 writeToFile:atomically: 方法将一些加密数据写入文本文件。问题是,需要保存的文件必须是用户加密的文件,并带有我选择的扩展名。这是我到目前为止所拥有的: [encryp
我有这串 abcdef x y z 或这个 "ab cd ef" x y z 我正试图将其解析为 s1 = "abcdef" arr = ["x","y","z"] 或者 s1 = "ab cd e
这个问题已经有答案了: One big javascript file or multiple smaller files? [duplicate] (7 个回答) 已关闭 6 年前。 我有 4 种类
我有这样的事情 - function DetailCtrl($scope) { $scope.persons = [{ id: 1, name: "Mark"
在操作(复制/移动)包含合并单元格的范围时,我总是收到错误消息“您的粘贴与合并单元格重叠。请取消合并单元格,然后重试”。但是,当尝试使用 Range#breakApart 取消合并范围内的单元格时,我
我有一个包含一些 TextFields 的 TableView。所述 TextFields 的值链接到二维数组(NSMutableArrays 的 NSArray)中的某些位置。 一个初始的干净数组定
我定义了一个标签,其中一半需要在左侧,另一半文本需要在右侧。我怎样才能解决这个问题,让另一半拉对? 我添加了 margin-right 以使文本向右拉,但它与其他 div 不一致。
我正在尝试创建一个正则表达式来将 JavaScript 中的每个单词与 .(点)分开。 function myFunction() { var url = "in.k1.k2.k3.k4.com"
如何使用 CSS 将网站的正文/内容区域与背景分开。为了向您展示我的意思,请看附图。因此,两侧的背景将扩展到拥有超大显示器的人,但内容将始终保持相同大小。 谢谢,阿马尔 http://i.imgur.
有可能用 CSS 将两个背景图像对 Angular 分开吗? 我知道如何只用一张图片制作它,但我不能用两张图片制作它。 这是一个例子: |-------------| | /|
这是一个JSFiddle我创建了展示代码的外观。我将如何给予这些 它们之间是否存在间隙,没有一个元素低于另一个元素? .main-content { width: 50%; float: le
我正在处理具有这样数据的项目(我使用带有 python 的 pandas 框架): days rain 0 1 2 0 3 1 1
我正在尝试编写一个宏来获取信息并将该信息发送到另一个函数,方法是将原始 va_list 拆分为字符串,然后从原始 va_list 生成另一个 va_list。 下面是我的代码。 调用宏 /* Usag
我需要来自 SharedToDomains 和 SharedFromDomains 的键和值数据。我想打印这些值。 var LogResponse = DeserializeFromJson(sLog
我现在正在使用 Alamofire 来发出发布请求。我首先在 ViewController 中构建它并开始工作。但后来我试图通过在另一个 class 中构建它来分离它。我使用 singleton 并且
我是一名优秀的程序员,十分优秀!