草庐IT

language-cmake

全部标签

c++ - CMake:当我尝试添加源目录本身或其子目录之一时,target_include_directories() 会打印错误

我正在编写一个C++库(仅header)并使用CMake生成我的(VisualStudio)项目和解决方案文件。我还在编写一个测试套件,它是同一个CMake项目的一部分。当我在代表我的仅header库的目标上调用target_include_directories()时会出现我的问题,以便我的库的使用者可以找到它的头文件。我收到以下错误消息(即使生成未中止)。CMakeErrorinCMakeLists.txt:Target"Fonts"INTERFACE_INCLUDE_DIRECTORIESpropertycontainspath:"D:/Projects/GPC/fonts/in

c++ - CMAKE : How to? 中的操作系统特定指令

我是CMAKE的初学者。下面是一个简单的cmake文件,它在mingw环境窗口中运行良好。问题显然在于我正在链接libwsock32.a的CMAKE的target_link_libraries()函数。在Windows中,这是可行的,我得到了结果。然而,正如预期的那样,在Linux中,/usr/bin/ld将寻找Linux操作系统上不存在的-lwsock32。我的问题是:如何指示CMAKE避免在Linux操作系统中链接wsock32库???任何帮助将不胜感激。我的简单CMake文件:PROJECT(biourl)set(${PROJECT_NAME}_headers./BioSocke

c++ - 如何使用 CMake 检测编译器对 C++11 的支持

有没有办法让CMake自动检测编译器是否支持C++11?因为最好在CMake运行期间通知用户代码将无法编译,因为编译器不支持C++11。目前我设置了C++11标志。但是,如果编译器不支持它,则用户会在CMake运行期间收到编译错误而不是错误。完美的东西就像find_package().但是,我还没有找到任何提供所需功能的模块或函数。另外,如果能够检测编译器是否需要标志std=c++0x,那就太好了。或std=c++11.有什么可用的还是我需要自己开发?以下是我目前使用的一些代码,但它仅适用于GNU'cGCC编译器。如果有更通用的解决方案就好了。if(CMAKE_COMPILER_IS_

c++ - 在 CMAKE 中添加 -fPIC 编译器选项的惯用方式是什么?

我遇到了至少3种方法来做到这一点,我想知道哪种是惯用的方法。几乎所有静态库都需要这样做。我很惊讶CMake中的Makefile生成器不会自动将其添加到静态库中。(除非我遗漏了什么?)target_compile_options(myLibPRIVATE-fPIC)add_compile_options(-fPIC)set(CMAKE_C_FLAGS"${CMAKE_C_FLAGS}-fpic")set(CMAKE_CXX_FLAGS"${CMAKE_CXX_FLAGS}-fpic")我相信可能还有其他变化。(如果你找到了,请编辑我的问题)如果您碰巧知道这个问题的答案,您是否还知道是否有

c++ - 如何在 CMake 中使用 CCache?

我想做以下事情:如果CCache存在于PATH中,则使用“ccacheg++”进行编译,否则使用g++。我尝试编写一个包含的小型my-cmake脚本CC="ccachegcc"CXX="ccacheg++"cmake$*但它似乎不起作用(运行make仍然不使用ccache;我使用CMAKE_VERBOSE_MAKEFILE对此进行了检查)。更新:根据thislink我尝试将脚本更改为cmake-DCMAKE_CXX_COMPILER="ccache"-DCMAKE_CXX_COMPILER_ARG1="g++"-DCMAKE_C_COMPILER="ccache"-DCMAKE_C_C

c++ - CMakeLists.txt :30 (project): No CMAKE_C_COMPILER could be found 处的 CMake 错误

我正在尝试使用CMake制作一个VisualStudio解决方案来编译最新版本的aseprite并且CMake不断给我:NoCMAKE_C_COMPILERcouldbefound.NoCMAKE_CXX_COMPILERcouldbefound.我已经下载了GCC,我正在使用Visual Studio 2015.我正在关注本教程:https://github.com/aseprite/aseprite/blob/master/INSTALL.md 最佳答案 那些错误信息CMakeErrorat...(project):NoCMAK

c++ - CMake 中的 include_directories 和 target_include_directories 有什么区别?

我的C++代码有一个目录结构,如下所示:||->include|->src我正在为我的代码编写一个CMakeLists.txt文件。我想了解CMake中include_directories和target_include_directories之间的区别。它们的用法和添加我的包含文件路径之间有什么区别,我应该使用哪一个? 最佳答案 include_directories(x/y)影响目录范围。此CMakeList中的所有目标,以及在其调用点之后添加的所有子目录中的目标,都将具有路径x/y添加到他们的包含路径中。target_incl

c++ - 来自 "The C++ Programming Language"第 4 版第 36.3.6 节的这段代码是否具有明确定义的行为?

在BjarneStroustrup的TheC++ProgrammingLanguage第4版36.3.6STL-likeOperations以下代码以chaining为例:voidf2(){std::strings="butIhavehearditworksevenifyoudon'tbelieveinit";s.replace(0,4,"").replace(s.find("even"),4,"only").replace(s.find("don't"),6,"");assert(s=="Ihavehearditworksonlyifyoubelieveinit");}断言在gcc中

c++ - 最简单但完整的 CMake 示例

不知何故,我对CMake的工作方式完全感到困惑。每次我认为我越来越接近理解CMake的编写方式时,它在我阅读的下一个示例中消失了。我只想知道,我应该如何构建我的项目,以便我的CMake在未来需要最少的维护。例如,当我在我的src树中添加一个新文件夹时,我不想更新我的CMakeList.txt,它的工作方式与所有其他src文件夹完全相同。这就是我想象我的项目结构的方式,但这只是一个例子。如果推荐的方式不同,请告诉我,并告诉我该怎么做。myProjectsrc/module1/module1.hmodule1.cppmodule2/[...]main.cpptest/test1.cppre

c++ - CMake 找不到 Visual C++ 编译器

在之前的项目上安装VisualStudio2015并运行CMake后,CMake错误指出它找不到C编译器。TheCcompileridentificationisunknownTheCXXcompileridentificationisunknownCMakeErroratCMakeLists.txt:4(PROJECT):NoCMAKE_C_COMPILERcouldbefound.CMakeErroratCMakeLists.txt:4(PROJECT):NoCMAKE_CXX_COMPILERcouldbefound.我在VisualStudio文件夹C:\ProgramFile