Articles of cmake

FindXXX.cmake文件的本地编译库的正确位置是什么?

我有一个手动安装的lib(到/ usr / local)在Linux系统上(Eigen3,顺便说一句)。 有一个FindEigen3.cmake与lib捆绑在一起,但是默认情况下并没有安装在任何地方。 有/ usr / share / cmake-xy /模块,其中CMake寻找额外的模块,但是把这些文件放在那里似乎不是办法。 在/ usr / local下有一个等价的地方,默认情况下也是扫描的吗? 或者创build自定义库模块的标准方式是什么? (虽然这个问题与程序devise没有严格的联系,但我认为,图书馆作者也可能会遇到同样的问题:手动安装的时候把这些文件放在哪里)

Cmake target_link_libraries没有链接我的库

我会开始说,我几乎完全愚蠢的Cmake问题。 我有一个Kdevelop 4.1项目的CMakeLists.txt : project(uart) find_package(KDE4 REQUIRED) include (KDE4Defaults) include_directories( ${KDE4_INCLUDES} ${QT_INCLUDES} src/include src/include/QSerialDevce ) add_subdirectory(doc) add_subdirectory(src) add_subdirectory(icons) link_directories(/usr/lib) find_library(SERIALDEVICE_LIB qserialdeviced) add_executable(uart ${uart_SRCS}) target_link_libraries(uart ${SERIALDEVICE_LIB}) 当我尝试构build我的项目时,我看到: uart/build> make -j2 — Found Qt-Version 4.6.3 (using /usr/bin/qmake-qt4) — Found X11: /usr/lib64/libX11.so — Found KDE 4.5 include dir: /usr/include/kde4 — Found KDE 4.5 library dir: /usr/lib64/kde4/devel — Found […]

用CMake创build二进制文件删除运行时path

我正在使用CMake在Linux上构build一个程序。 该程序编译成功,并从项目构build目录运行。 该程序与目录${HOME}/build/lib的自定义库链接 我有一个安装阶段: install(TARGETS ProgName RUNTIME DESTINATION bin) 当我运行make install ,程序被放到正确的位置,但是cmake安装程序会从二进制文件中删除运行时path。 — Install configuration: "Debug" — Installing: *binary name* — Removed runtime path from "*binary name*" 我已经阅读了互联网上讨论滥用LD_LIBRARY_PATHvariables的文章,所以如果可能的话,我想保留我的系统库位置。 我不是系统pipe理员,所以我不能将该位置添加到默认链接器searchpath。 有谁知道我可以如何保持开发时的链接path安装或至less自定义哪些path添加到运行时? 干杯

如何交叉编译为Linux x86与Linux amd64,cmake和g ++?

每个信息+1,帮助完成整个画面。 你不需要知道整个答案。 我会欣赏这个难题的个别部分。 谢谢。 我即将尝试我的第一次交叉汇编。 我search了这个和networking,发现了很多信息,但是我并不总是知道如何把这些东西放在一起,因为还有一些缺失的东西。 我的主机:linux Kubuntu amd64。 目标:Linux kubuntu的x86(32位)(应该很容易,不是?) 工具:g ++和cmake。 这里是我发现的信息: 如何使用gcc / cmake在64位linux机器上编译32位二进制文​​件 提到输出CFLAGS = -m32。 这是一块。 跨平台:select数据types使用32/64位 提到数据types。 我可能不得不在我的代码中注意。 #ifdef为32位平台 #ifdef为32位平台 链接到以下,虽然我不太确定如何使用它: http://predef.sourceforge.net/prearch.html http://ww.ubuntuforums.org/showthread.php?t=1377396 我做了:sudo apt-get install g ++ – multilib 缺件: 理想情况下,当我做'做'(与cmake),它应该吐出一个amd64二进制和一个x86之一。 我的CMakeLists.txt的一部分看起来像这样: add_definitions(-Wall -pthread) add_executable (../run.amd64 user.cpp time.cpp init.cpp utils.cpp main.cpp) target_link_libraries(../run.amd64 cppcms dbixx config++ ctemplate) 如何引入标志-m32创build第二个可执行文件? 我应该只想做一个可执行文件(例如,用于testing和debugging),我该如何告诉cmake制作一个或两个二进制文件? […]

CMAKE中操作系统特定的指令:如何?

我是CMAKE的初学者。 下面是一个简单的cmake文件,在mingw环境窗口中运行良好。 问题很明显,CMAKE的target_link_libraries()函数在链接libwsock32.a。 在Windows中,这个工作,我得到的结果。 但是,正如预期的那样,在Linux中,/ usr / bin / ld将查找Linux操作系统上不存在的-lwsock32。 我的问题是:如何指示CMAKE避免在Linux OS中连接wsock32库? 任何帮助将不胜感激。 我简单的CMake文件: PROJECT(biourl) set (${PROJECT_NAME}_headers ./BioSocketAddress.h ./BioSocketBase.h ./BioSocketBuffer.h ./BioSocketCommon.h ./BioSocketListener.h ./BioSocketPrivate.h ./BioSocketStream.h ./BioUrl.h BioDatabase.h ) set (${PROJECT_NAME}_sources BioSocketAddress.C BioSocketBase.C BioSocketCommon.C BioSocketStream.C BioUrl.C BioDatabase.C ) add_library(${PROJECT_NAME} STATIC ${${PROJECT_NAME}_headers} ${${PROJECT_NAME}_sources} ) # linkers #find_library(ws NAMES wsock32 PATHS ${PROJECT_SOURCE_DIR} NO_SYSTEM_ENVIRONMENT_PATH NO_DEFAULT_PATH) target_link_libraries(${PROJECT_NAME} bioutils wsock32) install (TARGETS […]

用mingw和Cmake构buildQGIS for Windows?

有谁知道如何用mingw和Cmake构buildQGIS for Windows? 有了我所有需要的依赖关系安装。

用Visual Studio CMake

我正在使用CMake创build一个Visual Studio项目,因为我正在创build一个跨平台的应用程序和库,但是我得到如下错误: 1> c:\ program files \ microsoft visual studio 10.0 \ vc \ include \ wchar.h(109):warning C4820:_wfinddata64i32_t:'4' 它使用gcc编译GNU / Linux很好,我还没有尝试过MinGW。 然而。

C:\ Users \'不被识别为编译用于QT的opencv的内部或外部命令

我想为QT编译opencv。 我使用这个教程 http://www.laganiere.name/opencvCookbook/chap1s1_2.shtml 在第8步我有这个错误: C:\opencv_bin1>mingw32-make [ 0%] Building C object 3rdparty/zlib/CMakeFiles/zlib.dir/adler32.c.obj 'C:\Users\' is not recognized as an internal or external command, operable program or batch file. 3rdparty\zlib\CMakeFiles\zlib.dir\build.make:53: recipe for target '3rdparty/zlib/CMakeFiles/zlib.dir/adler32.c.obj' failed mingw32-make[2]: *** [3rdparty/zlib/CMakeFiles/zlib.dir/adler32.c.obj] Error 1 CMakeFiles\Makefile2:269: recipe for target '3rdparty/zlib/CMakeFiles/zlib.dir/all' failed mingw32-make[1]: *** [3rdparty/zlib/CMakeFiles/zlib.dir/all] Error 2 makefile:112: recipe for target 'all' failed mingw32-make: […]

CMAKE:获取windows导入库的位置

在Visual Studio 2012的窗口上使用cmake,我需要得到导入lib的位置。 我可以得到我的dll目标的位置为: ADD_LIBRARY(foo SHARED ${CXX_SRCS}) GET_TARGET_PROPERTY(FOO_NAME foo LOCATION) 现在我有了foo.dll的path,我需要导入lib的pathfoo.lib。 有这个cmake属性吗? 如果是这样,那么最低cmake要求是多less?

在Visual Studio 2013与cmake的Qt – 我如何得到这个工作?

我目前正在尝试将库Qt整合到我的C ++项目中。 首先,我想我可以像任何其他图书馆一样使用它。 我下载了它,将包含path和库添加到我的VS项目中,并尝试了一小段代码,只是创build一个带有文本编辑和button的简单窗口。 这工作,并显示小用户界面。 现在我开始尝试实现一个从QWidget派生的类,并意识到,它可能不是那么简单。 我尝试创build的类看起来像这样: #include <QtWidgets\qstylepainter.h> #include <QtWidgets\qwidget.h> class MapRenderer : public QWidget{ Q_OBJECT public: MapRenderer(QWidget *parent = 0); protected: void paintEvent(QPaintEvent* event); }; 和相应的cpp文件: MapRenderer::MapRenderer(QWidget *parent) : QWidget(parent){ } void MapRenderer::paintEvent(QPaintEvent *event){ QPainter p(this); p.setPen(QPen(Qt::black, 3)); p.drawPoint(QPointF(10, 20)); } 现在,当我试着编译这个,我开始得到链接器三个链接器错误,看起来像这样: error LNK2001: unresolved external symbol "public: virtual struct QMetaObject const * […]