草庐IT

language-cmake

全部标签

c++ - 需要帮助尝试让 Cmake 找到第三方库

我目前有一个链接到两个第三方库的项目。这些库必须自己构建,然后链接到项目。一个是taglib,另一个是zlib。我注意到,当您在taglib目录中使用Cmake-gui程序时,您需要指定zlib的构建和安装位置。我的目标是让CMake为我的程序做类似的事情。由于这些库的存储位置不一致,如何提示用户提供所需库的路径?我希望这足够具体。 最佳答案 对于ZLib,CMake提供了FindZLIB.cmake,您可以“简单地”放置find_package调用你的cmakelists。如有必要,您可以对findzlib.cmake进行一些修改

c++ - cmake 找不到 qt 5.1.1

我刚刚为Windows32位(MinGW4.8,OpenGL)安装了Qt5.1.1,并尝试将其添加到我的cmake中。但是CMake只是不想找到它,我不知道为什么。我错过了什么?我需要设置一个环境变量还是什么?这是我的cmake:cmake_minimum_required(VERSION2.8.11)PROJECT(Blemmer)#Findincludesincorrespondingbuilddirectoriesset(CMAKE_INCLUDE_CURRENT_DIRON)#InstructCMaketorunmocautomaticallywhenneeded.set(CM

c++ - 防止控制台窗口在 Visual Studio 2017 cmake 项目中关闭

VisualStudio2017内置了对cmake项目的支持,这意味着您只需打开一个包含CMakeLists.txt的文件夹并使用它。但是,似乎没有办法preventtheconsolewindowfromclosingafterrunninganexecutable.对于普通的VisualStudio项目,您可以使用Ctrl+F5在不附加调试器的情况下运行。然而,Ctrl+F5的作用与F5完全相同,即运行可执行文件并立即关闭控制台窗口。另一个建议是将子系统设置为应用程序的“控制台”,但cmake项目没有我可以为其设置设置的VisualStudio项目。我想也许我可以为我的CMakeL

c++ - cmake:target_link_libraries 使用未共享的静态库

是否可以告诉cmake链接到静态库而不是共享?在我的CMakeLists.txt顶部,我配置了以下内容:set(CMAKE_FIND_LIBRARY_SUFFIXES.a${CMAKE_FIND_LIBRARY_SUFFIXES})稍后,我添加了一个二进制文件,并告诉它在Release模式下链接到tcmalloc:target_link_libraries(${BIN_NAME}optimizedtcmalloc_minimal)生成的makefile链接到tcmalloc的共享版本:$makeVERBOSE=1|greptcmalloc/usr/bin/c++...-Wl,-Bdyn

c++ - 多个输出文件的 cmake add_custom_command 问题

在使用add_custom_command和多个输出文件时,我注意到cmake中存在一些潜在的不正确行为。我已经能够将问题隔离为一个最小的例子(见下文)。似乎当我在add_custom_command中指定了两个输出文件时,在某些情况下,第二个输出文件的上游依赖项没有被正确跟踪。cmakedocumentation明确提到允许多个输出文件。这里有趣的是,交换输出文件的顺序会导致不同的行为,这表明第一个OUTPUT文件的处理方式不同。请参阅下面展示此行为的玩具示例。第一次调用make运行良好。触摸a.txt后,Copyingbaz.cpptobaz2.cpp规则不会在第一次调用make时

c++ - 如何以编程方式迭代所有 CMake 目标?

有没有办法从顶层CMakeLists.txt中获取CMake项目的所有目标,即以编程方式迭代目标?我想这样做的原因是对每个目标应用一些XCode特定的设置。.if(CMAKE_GENERATORMATCHES"Xcode")include(sanitize_xcode)sanitize_xcode(myTarget)endif()仅供引用-清理模块看起来像这样。.macro(set_xcode_propertyTARGETXCODE_PROPERTYXCODE_VALUE)set_property(TARGET${TARGET}PROPERTYXCODE_ATTRIBUTE_${XCO

c++ - CMake:如何设置源、库和 CMakeLists.txt 依赖项?

我有几个项目(所有项目都使用CMake从相同的源树结构构建)都使用自己的数十个支持库的组合。所以我想到了如何在CMake中正确设置这个问题。到目前为止,我只找到CMakehowtocorrectlycreatedependenciesbetweentargets,但我仍然在使用全局依赖项(项目级别确实知道一切)或本地依赖项(每个子级别目标只处理自己的依赖项)设置所有内容之间挣扎。这是我的目录结构的简化示例,以及我目前使用CMake和本地依赖项提出的内容(示例仅显示一个可执行项目App1,但实际上还有更多App2、App3等):Lib+--LibA+--Inc+--a.h+--Src+-

c++ - 如何在 CMake 项目中使用外部 DLL

我一直在互联网上搜索,但找不到任何可以回答我的问题的内容(或者我不知道要搜索什么)。无论如何,这是我的问题:我想在我的CMake项目中使用3rdParty库(.dll文件)。我想要包含的库(https://github.com/pitzer/SiftGPU)是开源的,并且还提供我想要使用的二进制文件,并且如果相关的话,还可以使用CMake作为构建工具。我希望我已经足够清楚了。 最佳答案 首先,编辑您的CMakeLists.txt以包含您的第三方库。您需要两件事:头文件的路径和要链接的库文件。例如:#searchingforinclu

c++ - cmake glob包含同时保留目录结构

我是cmake的新手,我正在尝试安装.hpp文件,同时保留目录结构。目前为止FILE(GLOBfiles"${CMAKE_CURRENT_SOURCE_DIR}/include/*.hpp""${CMAKE_CURRENT_SOURCE_DIR}/include/MyLib/*.hpp""${CMAKE_CURRENT_SOURCE_DIR}/include/MyLib/detail/*.hpp"install(FILES${files}DESTINATIONinclude)所有文件都已找到,但目录层次结构已展平。FWIW我试图模拟的bjam命令是installheaders:../i

c++ - 在使用 cmake 构建的项目中添加头文件和 .cpp 文件

我已经使用cmake和一些库构建了一个项目。但是我想在要编码的项目中添加一些头文件和.cpp文件。最简单的方法是什么?我可以只创建一个.cpp和头文件,然后在VisualStudio中再次构建项目?还是因为项目是使用cmake构建的,所以我不能? 最佳答案 您可以将所有头文件/源文件放在同一个文件夹中并使用类似的东西file(GLOBSOURCESheader-folder/*.hsource-folder/*.cpp)add_executable(yourProj${SOURCES})这样,您可以通过以下两种方法之一将新添加的he