小编CD8*_*D86的帖子

cmake别名的用处

我不完全得到别名表达式的应用程序.我明白我可以写这样的东西

cmake_minimum_required(VERSION 3.5.1 FATAL_ERROR)
project(myLibs)
add_library(${PROJECT_NAME} src/test.cpp)
add_library(myLibs::myLibs ALIAS ${PROJECT_NAME})
...
Run Code Online (Sandbox Code Playgroud)

然后使用

  target_link_libraries(${TARGET_NAME}
  myLibs::myLibs
Run Code Online (Sandbox Code Playgroud)

在另一个文件中将库链接到某些可执行文件等.

但为什么我会这样做?我不妨跳过别名定义,直接使用构建库的targetname

target_link_libraries(${TARGET_NAME}
myLibs
Run Code Online (Sandbox Code Playgroud)
  • 任何人都可以向我解释为什么存在别名
  • 为什么他们使用::语法?别名不是完全随意的吗?

alias cmake

9
推荐指数
2
解决办法
1394
查看次数

肖恩·帕特(Sean Parent):对于继承层次结构中的多态类型,具有可变对象是极端例外

我想知道肖恩家长,其实就是 被这句话

对于继承层次结构中的多态类型,具有可变对象是极端例外...

他继续提到两个原因,但是我很难理解他的解释。

是什么让我无法在子类中提供实际上更改此对象内部结构的函数?

有人可以详细说明一下吗?

c++ polymorphism inheritance virtual-functions c++11

5
推荐指数
1
解决办法
112
查看次数

访问单态的变体

我很难理解变体。

我读到,我可以使用 std::monostate 来暗示空状态作为变体中的替代方案之一。但是,如何使用 std::visit 促进的访问者模式?

#include <variant>


struct Visitor{
  void operator()(double){};
  void operator()(int){};
};

int main() {
  std::variant<std::monostate, int, double> v = 1;

  std::visit(Visitor{}, v);
}
Run Code Online (Sandbox Code Playgroud)

不起作用,为 std::monostate 提供调用运算符重载也不起作用。

如果我尝试为调用运算符包含通用引用重载,它只会匹配所有内容并且不再使用两个特定重载

c++ variant visitor-pattern

4
推荐指数
1
解决办法
7838
查看次数

无法在CMake项目中使用Q_OBJECT宏

我在CMake项目中遇到了Qt的元对象编译器的问题。我正在构建的共享库包含以下代码,并使用pimpl习惯用法。调用CMake之后,编译后得到

AUTOGEN:错误:〜/ tools / Project / gui / src / mainWindow.cpp:该文件包含Q_OBJECT宏,但不包含“ mainWindow.moc”!gui / CMakeFiles / gui_automoc.dir / build.make:57:目标'gui / CMakeFiles / gui_automoc'的配方制作失败[2]:*** [gui / CMakeFiles / gui_automoc]错误1 CMakeFiles / Makefile2:234:配方目标'gui / CMakeFiles / gui_automoc.dir / all'失败

我没有弄错我的意思,或者是将src文件与Q_OBJECT宏合并到我的项目中的正确方法是什么。请帮助= /

gui / include / gui / mainWindow.hpp

#include <QMainWindow>
#include <string>


class MainWindow : public QMainWindow {
  class MainWindowImpl;

 public:
  MainWindow(QWidget* parent = nullptr);

 private:
  MainWindowImpl* pimpl_;
};
Run Code Online (Sandbox Code Playgroud)

gui / src / mainWindow.cpp

#include "gui/mainWindow.hpp"

class MainWindow::MainWindowImpl : public QWidget{
 Q_OBJECT
  public: …
Run Code Online (Sandbox Code Playgroud)

c++ qt cmake qobject qmetaobject

3
推荐指数
1
解决办法
1934
查看次数

将二维矩阵与向量相乘以跨越第三维 - MATLAB

当我试图将m x n矩阵与p-dimensional向量相乘时,我遇到了一些困难.

试图避免for循环,这是我想要实现的

enter code here
M = [1 2 3;                   p = [1;2;3]
     4 5 6;
     7 8 9]
Run Code Online (Sandbox Code Playgroud)

我想获得一个3x3x3矩阵,其中第三维中的切片只是M与相应条目相乘的条目p.

非常感谢帮助

matlab matrix vectorization multiplication dimension

2
推荐指数
1
解决办法
337
查看次数

取消一个单词后Vim替换命令

假设我通过"yiw"在光标下拉出一个单词,然后我导航到我想要替换的单词.什么是用缓冲区中的那个替换这个单词的关键组合?

vim

2
推荐指数
1
解决办法
52
查看次数

让 Ctrl-p 和 Ctrl-n 搜索按键入字符过滤的 shell 历史记录

我喜欢 emacs 键绑定默认也可以在 ubuntu shell 中使用。但是,我还想让这两个键部分搜索 shell 历史记录,但根据已输入的内容进行过滤。如果在 /etc/inputrc 中启用,则正常的向上翻页和向下翻页键即可执行此操作,但我不这样做没有这些键,因此也想使用 Ctrl-p 和 Ctrl-n。我已经在 zshell 中看到了这个工作,但我使用的是 bash。我怎样才能做到这一点?

bash rc input-history

2
推荐指数
1
解决办法
789
查看次数

Docker:多阶段构建会产生多个镜像

给出这个多阶段构建的小例子

FROM node:10 AS ui-build
WORKDIR /usr/src/app

FROM node:10 AS server-build
WORKDIR /root/

EXPOSE 3070

ENTRYPOINT ["node"]
CMD ["index.js"]
Run Code Online (Sandbox Code Playgroud)

为什么这会在我的本地文件系统上产生 3 个图像?

"<none>";"<none>";"58d63982fbef";"2020-04-15 17:53:14";"912MB"
"node";"10";"bd83fcefc19d";"2020-04-14 01:32:21";"912MB"
"test";"latest";"3913dd4d03b6";"2020-04-15 17:53:15";"912MB"
Run Code Online (Sandbox Code Playgroud)

我期望两个镜像,基础镜像和服务器构建镜像。我使用了标准的 docker build 命令,即

docker build -t test . 
Run Code Online (Sandbox Code Playgroud)

那么图像的哪些部分是空的,哪些是测试的?

我很困惑

multistage docker

2
推荐指数
1
解决办法
980
查看次数