小编tom*_*odi的帖子

将前缀路径列表传递给CMAKE_ARGS中的ExternalProject_Add

我有一个CMake项目,我想用ExternalProject_Add命令构建.在CMAKE_ARGS参数中,我想传递一个前缀路径列表,其中包含外部项目所需的CMake包.

set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} 
   ${CMAKE_SOURCE_DIR}/MyProject/cmake_packages
   ${CMAKE_SOURCE_DIR}/OtherProjects/cmake_packages)

ExternalProject_Add(MyProject
   DOWNLOAD_COMMAND ""
   SOURCE_DIR ${CMAKE_CURRENT_LIST_DIR}/source
   BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/MyProjectBuild
   INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/MyProjectInstall
   CMAKE_ARGS 
              -DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}/MyProjectInstall
              -DCMAKE_PREFIX_PATH=${CMAKE_PREFIX_PATH}
   )
Run Code Online (Sandbox Code Playgroud)

不幸的是,这不起作用,因为构建目录中生成的文件MyProject-configure-Debug.cmake包含类似这样的内容(简称):

set(command "C:/Path/to/cmake.exe;-DCMAKE_PREFIX_PATH=D:/path/to/MyProject/cmake_packages;D:/path/to/OtherProjects/cmake_packages;-GCodeBlocks - Ninja;D:/path/to/my/source/dir")
execute_process(
  COMMAND ${command}
  RESULT_VARIABLE result
  OUTPUT_FILE "D:/.../MyProject-configure-out.log"
  ERROR_FILE "D:/.../MyProject-configure-err.log"
  )
Run Code Online (Sandbox Code Playgroud)

由于将有一个名为command包含传递给的列表的变量execute_process,因此只将第一个路径CMAKE_PREFIX_PATH传递给外部CMake调用CMAKE_PREFIX_PATH.其他参数作为命令行参数传递给CMake.

我找到了两个解决方案:

  1. 这个答案提到了一个创建新.cmake文件的解决方案,该文件将包含在外部项目中.
  2. 也可以将类似-DCMAKE_EXTRA_PREFIX_PATH的东西传递给CMAKE_ARGS参数.

两种解决方案都需要CMakeLists.txt通过包含额外.cmake文件或附加额外路径来修改外部项目文件CMAKE_PREFIX_PATH.但这不是一个选择,因为我希望不要触及外部项目.

是否可以在没有任何额外.cmake文件或额外变量的情况下处理此问题?

也许我只是错过了一些必须要做的"引用魔术"?

cmake

8
推荐指数
1
解决办法
1828
查看次数

如何更新 CMake Qt 项目中的 *.ts(用于 Qt Linguist)文件?

我找到了如何在 CMake 中使用 .ts 文件:

SET(TRANS localization/en_en.ts)
QT5_ADD_TRANSLATION(QM ${TRANS})
Run Code Online (Sandbox Code Playgroud)

(并添加到可执行文件中)。

当我从 Qt 菜单运行 lupdate 时,我得到了以下信息: lupdate warning: no TS files specified. Only diagnostics will be produced.

那么如何为一个简单的 CMake 项目更新 *.ts 呢?

qt localization cmake qt-linguist

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

我想使用powershell在temp中的给定目录中提取所有.zip文件

我编写了以下代码来将.zip文件解压缩到temp:

function Expand-ZIPFile($file, $destination)
{
    $shell = new-object -com shell.application
    $zip = $shell.NameSpace($file)
    foreach ($item in $zip.items()) {
       $shell.Namespace($destination).copyhere($item)
    }
}

Expand-ZIPFile -file "*.zip" -destination "C:\temp\CAP"
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

PS C:\Users\v-kamoti\Desktop\CAP> function Expand-ZIPFile($file, $destination)
{
   $shell = new-object -com shell.application
   $zip = $shell.NameSpace($file)
   foreach ($item in $zip.items()) {
      $shell.Namespace($destination).copyhere($item)
   }
}

Expand-ZIPFile -file "*.zip" -destination "C:\temp\CAP"
You cannot call a method on a null-valued expression.
At line:5 char:19
+  foreach($item in $zip.items())
+                   ~~~~~~~~~~~~
+ CategoryInfo          : InvalidOperation: (:) [], RuntimeException
Run Code Online (Sandbox Code Playgroud)

powershell unzip

4
推荐指数
2
解决办法
8554
查看次数

Qt插件不起作用

我创建了一个自定义的小部件插件。该插件与Qt Creator集成良好,但是当我编译程序时,出现此错误:

“ test.h:没有这样的文件或目录”

其中test.h是自定义窗口小部件的名称。我究竟做错了什么?这是应用程序的* .pro文件:

TEMPLATE = app
SOURCES += main.cpp \
    mainwindow.cpp
HEADERS += mainwindow.h
FORMS += mainwindow.ui
Run Code Online (Sandbox Code Playgroud)

这是插件的* .pro文件:

CONFIG      += designer plugin debug_and_release
TARGET      = $$qtLibraryTarget(testplugin)
TEMPLATE    = lib
HEADERS     = testplugin.h
SOURCES     = testplugin.cpp
RESOURCES   = icons.qrc
target.path = $$[QT_INSTALL_PLUGINS]/designer
INSTALLS    += target
include(test.pri)
Run Code Online (Sandbox Code Playgroud)

linker plugins qt qmake

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

如何使用CMake项目在Qt Creator中添加一个类?

我曾经用Visual Studio编写代码,这很容易添加一个类.最近,我转而使用Qt Creator编写纯C++项目,添加类总是有问题.代码如下:

#include <iostream>
#include "hello.h"

using namespace std;

int main()
{
    Hello H;
    H.say();
    cout << "Hello World!" << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我创建了一个名为Hello的类并将其包含在main.cpp中,但是当我编译它时,会发生一些错误.

在此输入图像描述

那么如何使用QT创建者添加一个类?提前致谢!

c++ qt cmake

3
推荐指数
2
解决办法
7393
查看次数

AttributeError:'module'对象没有属性'hist'

我是Python的新手(我正在使用Spyder)并且正在尝试创建一些直方图,这些直方图来自IMDB的顶级电影.我已经导入了matplotlib,numpy和pandas,以及.txt文件,但是当我运行以下代码行时:

plt.hist(data.year, bins=np.arange(1950, 2013), color='#cccccc')
Run Code Online (Sandbox Code Playgroud)

我收到一条错误消息:

Traceback (most recent call last):
  File "stdin", line 1, in <module>
AttributeError: 'module' object has no attribute 'hist'
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

python matplotlib histogram attributeerror pandas

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