Articles of cmake

使用CMake导入错误编译embedded式Python的C ++

我正在尝试在一个使用CMake编译的C ++项目中包含一个python文件。 首先,我使用这两个文件做了这个独立的: #include <Python.h> #include <stdio.h> int main(int argc, char *argv[]) { setenv("PYTHONPATH", ".", 0); char hostname[] = "localhost"; PyObject *pName, *pModule, *pFunc; PyObject *pArgs, *pValue; Py_Initialize(); pName = PyString_FromString("GetHostname"); pModule = PyImport_Import(pName); Py_DECREF(pName); if(pModule != NULL) { pFunc = PyObject_GetAttrString(pModule, "GetHostname"); if (pFunc && PyCallable_Check(pFunc)) { pArgs = PyTuple_New(1); pValue = PyString_FromString(hostname); PyTuple_SetItem(pArgs, […]

是否有可能在Linux上使用C ++与CMake创buildWindows exe文件?

我目前正在从家用Windows PC上运行代码,通过SSH连接在Linux PC上进行编译。 但是由于生成的程序创build了一个GUI,所以我不能真正testing它。 是否有可能创build,除了Linux程序,我可以运行在我的家用电脑上的Windows EXE? 这是我的CMakeLists(使用QT5): cmake_minimum_required(VERSION 2.8.11) project(p3) set(CMAKE_PREFIX_PATH $ENV{QT5_QMAKE_DIR}) MESSAGE(STATUS "QT5_QMAKE_DIR: " ${CMAKE_PREFIX_PATH}) set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin) set(LIBRARY_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/lib) set(CMAKE_INCLUDE_CURRENT_DIR ON) set(CMAKE_VERBOSE_MAKEFILE on) set(CMAKE_AUTOMOC ON) # Possibly set this to DEBUG for testing set(CMAKE_BUILD_TYPE Release) include_directories(${CMAKE_CURRENT_BINARY_DIR}) #project source directories find_package(Qt5Widgets REQUIRED) find_package(Qt5Core REQUIRED) find_package(Qt5Gui REQUIRED) find_package(OpenMP) if (OPENMP_FOUND) message("OPENMP FOUND") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") set(CMAKE_CXX_FLAGS […]

交叉编译arm cortex-m4的libwebsockets时发生cmake错误

让我引导这个问题:我今天花了几个小时研究这个问题,在stackoverflow上有很多点击。 我觉得我很接近,但总是有一些事情。 我不会问我是不是觉得我已经用尽了Google所能提供的东西。 我知道我的目标,并成功地交叉编译了许多开源软件包,但是,由于libwebsockets使用了我不熟悉的cmake,所以这些错误对我来说是相当陌生的。 我想我可以通过cmake文档,但我怀疑我会在我有的时间框架内find答案。 我正在尝试为ARM-Cortex-M4平台交叉编译libwebsockets。 我遵循libwebsockets文档中的说明:1)在libwebsockets源代码目录上创build一个“build”目录。 2)从构build目录中,调用cmake: cmake .. -DCMAKE_TOOLCHAIN_FILE=../cross.cmake 3)我用他们的ARM模板来创buildcross.cmake # # CMake Toolchain file for crosscompiling on ARM. # # This can be used when running cmake in the following way: # cd build/ # cmake .. -DCMAKE_TOOLCHAIN_FILE=../cross-arm-linux-gnueabihf.cmake # # Name of C compiler. SET(CMAKE_C_COMPILER "arm-uclinuxeabi-gcc") SET(CMAKE_CXX_COMPILER "arm-uclinuxeabi-g++") # this one is […]

如何链接cmake中的共享对象?

我怎样才能将共享对象链接到我自己的cmake代码? 我想链接OpenCV,我的意思是libopencv _ ***。so.3.1或类似的东西到我自己的软件包。 在这种情况下,我相信以下几行是这个问题的答案。 … find_package(OpenCV 3.1) include_directories(${OpenCV_INCLUDE_DIRS}) link_directories(${OpenCV_LIBRARY_DIRS}) … target_link_libraries(my_node ${OpenCV_LIBRARIES}) 但是,这是这个问题。 我已经在/ usr / include和/ usr / lib / x86_64-linux-gnu下安装了OpenCV 2.4.8,现在我想使用安装在本地目录“〜/ Libs / opencv”中的OpenCV 3.1.0码。 所以在编译代码的时候,OpenCV 2.4.8会优先使用。 在这种情况下,我应该如何描述CMakeLists.txt? 目前我正在撰写如下。 … set(CMAKE_PREFIX_PATH ${HOME}/Libs/opencv) include(${HOME}/Libs/opencv/share/OpenCV/OpenCVConfig.cmake) find_package(OpenCV 3.1) set(OpenCV_INCLUDE_DIRS ${HOME}/Libs/opencv/include) include_directories(${OpenCV_INCLUDE_DIRS) set(OpenCV_LIBRARY_DIRS ${HOME}/Libs/opencv/lib) link_directories(${OpenCV_LIBRARY_DIRS}) … 上面的CMakeLists.txt帮助了我。 如果可执行文件被复制到libopencv _ ***。so.3.1所在的同一目录中,则上述CMakeLists.txt工作。 否则,“make”失败。 但是我想使它在包含可执行文件的目录上独立。 我该怎么办这个问题? 提前致谢。

如何在Linux上打包c ++依赖关系

我正在使用cmake在Ubuntu 16.04上开发一个c ++程序,用g ++ 5和clang ++ – 3.8编译。 现在我想让这个程序也可以用于14.04,但是由于我使用了大量的c ++ 14特性,我不能在该系统上重新编译它。 相反,我想问一下如何/如何打包所有依赖项(特别是c ++标准库),以便我可以在目标系统上解压文件夹并运行应用程序。 理想情况下,我正在寻找一些自动/脚本解决scheme,我可以添加到我的cmake构build。 奖金问题: 现在,这只是一个简单的命令行程序,我可以轻松地重新编译所有第三方的依赖关系(事实上我也是这样)。 但是,从长远来看,我也想移植一个QT应用程序。 理想情况下,解决scheme也适用于这种情况。

如何修复错误:-march = switch和-mtune = switch的错误值(native)

我正在编译这里提供的图书馆: http : //www.robots.ox.ac.uk/~vgg/software/fastann/ ,但 bash-3.2$ PREFIX=/usr/local/ cmake . && make — The C compiler identification is GNU — The CXX compiler identification is GNU -Wall -O2 -g3 -msse2 -march=native -fno-exceptions -fno-rtti — Prefix = /usr/local/ — Configuring done — Generating done — Build files have been written to: /path/to/dir [ 14%] Building CXX object […]

使用CMake进行编译后,使用mpich2中的mpirun出现问题

我在尝试运行MPI时遇到了麻烦。 我安装了mpich2-1.4.1p1,当我使用mpirun运行mpi程序时,我得到: [starsky:27711] [[INVALID],INVALID] ORTE_ERROR_LOG: A system-required executable either could not be found or was not executable by this user in file ../../../../../../orte/mca/ess/singleton/ess_singleton_module.c at line 357 [starsky:27711] [[INVALID],INVALID] ORTE_ERROR_LOG: A system-required executable either could not be found or was not executable by this user in file ../../../../../../orte/mca/ess/singleton/ess_singleton_module.c at line 230 [starsky:27711] [[INVALID],INVALID] ORTE_ERROR_LOG: A system-required […]

为什么cmake在64位系统上查找32位库而不是64位库?

问题描述 我正在将几个代码库从Red Hat 5移植到6,我碰到一个cmake问题,我完全被困住了。 Cmake始终在RHEL6系统上的/usr/lib下find32位版本的库,而不是在/usr/lib64下的64位版本,而在RHEL5系统上正确检测到lib64版本。 最小例子 例如,我有一个非常小的CMakeLists.txt文件: cmake_minimum_required(VERSION 2.8) find_library(XTEST X11) message("Found X11 at ${XTEST}") 在RHEL6系统上,运行cmake导致: $ cmake .. — The C compiler identification is GNU 4.4.7 — The CXX compiler identification is GNU 4.4.7 — Check for working C compiler: /usr/bin/cc — Check for working C compiler: /usr/bin/cc — works — Detecting C compiler […]

创buildCMake选项组

我正在使用CMake来pipe理Linux上的项目集合,而不是一个项目,但原理是一样的。 每个项目都有自己的选项集合,例如DEVEL开关和要包含的自定义代码。 这些都是以标准的CMake方式添加的: OPTION(NAME "Helpstring" VALUE) 我正在寻找一种方法来分组这些选项,根据他们属于哪个项目,因为目前他们是按字母顺序放置,可能会相当混乱。 这也可以节省我为每个选项提供独特的名称,例如一个DEVEL选项可以适用于所有的项目,但我可能只想在一些项目上启用它。 我不想写例如PROJECTNAME_DEVEL选项。 理想情况下,我希望系统根据项目划分选项,例如 PROJECT1NAME: DEVEL: ON PROJECT2NAME: DEVEL: OFF ANOTHER_OPTION: ON 我能不能做到这一点? 我主要是瞄准这个在cmake的ncurses接口,我看到Qt接口可以分组条目,所以这可能在ncurses接口? 干杯

GoogleTest CMake和使testing不运行

我承认我有一个独特的情况。 我们使用Make构build应用程序。 但是我的IDE,CLion使用CMake。 所以我试图设置GoogleTest在两种(各种)上运行。 我可以用两种方式编译我的代码(在命令行中使用make并从我的IDE中编译)。 但从CLion内部,当我selecttesting夹具并点击运行button,没有testing被发现,这就是我收到的: Running main() from gtest_main.cc [==========] Running 0 tests from 0 test cases. [==========] 0 tests from 0 test cases ran. (0 ms total) [ PASSED ] 0 tests. Process finished with exit code 0 这是我的testing夹具: #include <gtest/gtest.h> #include "OPProperties.h" namespace { // The fixture for testing class OPPropertiesTestTest. class […]