草庐IT

language-cmake

全部标签

c++ - QMake 模拟 cmake 的 "find_package"

qmake有没有类似cmake的find_package的机制?如果我需要在我的系统上安装包含库,我怎样才能避免手动编写包含路径和库名称?最佳做法是什么? 最佳答案 如果使用的库提供了pkgconfig.pc文件,您可以在.pro文件中使用link_pkgconfig作为:CONFIG+=link_pkgconfigPKGCONFIG+=quazip如果库提供命令行实用程序来获取编译器标志(如postgresql有),那么你可以调用它并将添加输出分配给相应的变量INCLUDEPATH+=$$system(pg_config--inc

c++ - 使用 CMake 链接到 Windows 上的静态库时出现问题

LS,我正在尝试构建一个可用于动态和静态链接的静态和动态库。无论使用何种编译器,我都希望该库能够在尽可能多的平台上运行。为了构建库和一些测试程序,我使用CMake在Linux和Windows上分别使用g++和MSVC++构建库eeg。在Linux上,动态库和静态库似乎都像我怀疑的那样工作,在Windows上,.dll似乎可以完美链接并且我的测试程序可以运行。但是,使用静态库的程序会提示链接错误。我真的很想念我做错了什么,它可能在我的CMakeLists.txt中,也可能在我的库的设置中。下面我制作了一个最小程序,它使用我的库来演示我遇到的问题。该库包含两个C++文件,一个导出C++文件

c++ - Windows 10 上带有 mingw 的 CMake : Detecting CXX compiler ABI info - failed

我想使用cmake在Windows10上创建MinGWMakefile。我已经安装了mingw,并且可以毫无问题地使用mingw32-make和g++命令。测试项目是一个super简单的CMakeLists.txt文件:cmake_minimum_required(VERSION3.10)project(hello-world)add_executable(hello-worldmain.cpp)和一个简单的main.cpp文件:#includeintmain(){std::cout这些是我用来创建makefile的命令:>>mkdirbuild>>cdbuild>>cmake-G"M

c++ - 使用 CMake 创建 Visual Studio "Custom Build Step"

每次在VisualStudio中构建项目时,我都想运行代码生成器,即使项目中的源文件没有更改。因此,我想按照VisualStudio:RunC++projectPost-BuildEventevenifprojectisup-to-date中的说明设置自定义构建步骤。.如何使用CMake创建这样的构建步骤? 最佳答案 我认为您正在寻找自定义目标:add_custom_target来自文档:Addatargetwithnooutputsoitwillalwaysbebuilt.或者如果你正在生成一个代码文件,https://cmake

c++ - 如何在 C++ 构建工作流程中集成 PreMake/CMake

我目前正在研究PreMake/CMake。但是,我看不出如何在整个跨平台构建工作流程中使用它。实际上,它会生成makefile(或解决方案)。那么,您如何在每个目标平台上实际构建这些解决方案?您是否必须为每个目标维护一个构建脚本(如.sh或.bat文件)?这首先会破坏使用像premake/CMake这样的工具的目的。一个教程的链接会显示从编码到使用premake的最终构建产品的所有过程会很棒。感谢您的帮助。 最佳答案 我们的主要开发也是用C++完成的。我们使用CMake+ANT。Windows上的VisualStudio,Mac和i

c++ - 在 Cmake 中使用 Cuda 对象链接

现在我正在开发一个使用Cuda5的对象链接功能的项目。由于项目开始变得复杂,我想切换到使用cmake来编译代码。但是,我似乎无法让对象链接正常工作。我最终创建了该项目的玩具版本,它出现了与原始项目相同类型的错误。玩具项目包含一个调用内核函数以在GPU上运行的主文件(TextureMain.cu)。在每个GPU线程中,引用了一个用户定义类(TextureFunc)的实例,其中该类存在于与主文件不同的文件夹中。该类由该文件夹中的TextureFunc.cu和TextureFunc.h文件组成。这是我正在使用的CMakeList.txt文件:在项目目录下(包含src目录):project(T

c++ - cmake + 痛饮 + 依赖项

今天我尝试使用“cmake+swig”的组合来为我的代码生成绑定(bind)。基本上它有效:set(SWIG_EXECUTABLE"/usr/bin/swig")find_package(SWIGREQUIRED)include(${CMAKE_CURRENT_SOURCE_DIR}/UseSWIG.cmake)set(CMAKE_SWIG_FLAGS-packageexample)set(CMAKE_SWIG_OUTDIR"${CMAKE_CURRENT_SOURCE_DIR}/example")set_source_files_properties(native.iPROPERTI

c++ - 如何在CMake中分离头文件和源文件?

我的项目结构如下:--root:main.cppCMakeLists.txt--src:function.cppCMakeLists.txt--include:function.h主要.cpp:#include#include"function.h"usingnamespacestd;intmain(intargc,char*argv[]){//callmoduleinfunction.hppreturn0;}根目录下的CMakeLists.txt:project(t1)cmake_minimum_required(VERSION2.8)add_subdirectory(src)fil

c++ - Cmake:为多配置 cmake 项目指定配置特定设置

这里是Cmake新手,我目前正在尝试将开发时仅考虑单一配置的cmake项目转换为可以生成visualstudio文件的多配置项目。我无法解决的问题是,在cmake项目中存在依赖于变量CMAKE_BUILD_TYPE的逻辑,例如:set(ENABLE_DEBUGTRUE)if("${CMAKE_BUILD_TYPE}"STREQUAL"Release")set(ENABLE_DEBUGFALSE))因为对于多配置cmake,CMAKE_BUILD_TYPE是空的,所以这种方法不起作用。变量ENABLE_DEBUG然后在cmake项目中用于诸如:案例1:将库添加到仅调试配置if(ENABL

c++ - CMake 没有正确找到 CUDA 库

我正在尝试构建一个需要CUDA的程序。对于我提供的CMake脚本:cmake-DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda..找到CUDA并且CMake正常运行:staudt~/workspace/clutbb/cluster/build$cmake-DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda..--FoundCUDA:/usr/local/cuda(foundversion"6.5")--FoundIntelTBB--Boostversion:1.56.0--FoundthefollowingBoostlibrarie