草庐IT

vs-cmake-examples

全部标签

c++ - 使用 CMake 仅构建一次外部库

我的C++项目包含第三方库的源代码(目前作为git子模块)。这个库由我们的主CMakelists通过使用add_subdirectory添加到项目中,然后库与主目标链接。这是我当前Cmake文件的简化版本:add_subdirectory(foo)set(FOO_LIBRARY${CMAKE_CURRENT_SOURCE_DIR}/libfoo/libfoo.so)add_executable(targetmain.cpp)add_dependencies(targetfoo)target_link_libraries(target${FOO_LIBRARY})这个库需要很长时间来构建

c++ - 如何在 Visual Studio 的 CMake 中获取当前配置(发布/调试)

我在VisualStudio2013、CMake3.5.1、Windows10上。我正在尝试通过CMake复制一些文件,如下所示:file(COPY${IMAGES}DESTINATION${CMAKE_BINARY_DIR}/bin/Release)是否可以用代表配置的变量替换“Release”:file(COPY${IMAGES}DESTINATION${CMAKE_BINARY_DIR}/bin/${Variable})我尝试过file(COPY${IMAGES}DESTINATION${CMAKE_BINARY_DIR}/bin/${CMAKE_BUILD_TYPE})但是CM

c++ - 为什么这个enable_if函数模板不能专用于VS2017?

以下使用VS2015编译,但在VS2017中失败并出现以下错误。代码是否在做一些非标准的事情,已在VS2017中修复,或者VS2017应该编译它?#include"stdafx.h"#includetemplateconstexprautoToUnderlying(Ee){returnstatic_cast>(e);}templateboolconstexprIsFlags(T){returnfalse;}templatestd::enable_if_t>operator|(Elhs,Erhs){returnToUnderlying(lhs)|ToUnderlying(rhs);}en

c++ - VS 2005 C++ 项目中的 msvcr90.dll 依赖项

我在VS2005中为nativeWin32/非托管C++创建了一个DLL项目,将其命名为myProj.dll。它依赖于第3方商业DLL,后者又依赖于msvcr90.dll(我假设它是从VS2008项目构建的)。我将其命名为thirdParty.dll。我的DLL项目在VS2005中构建得很好。我构建了一个链接到myProj.lib的测试应用程序(同样是VS2005Win32C++)。(顺便说一句,根据.lib的小尺寸以及在运行时应用程序必须找到myProj.dll的事实来判断,我猜测.lib只是调用的包装器加载实际DLL的loadLibrary();是否接近?)我的问题是,在运行时,测

c++ - GitHub 上的项目需要带有 Qt4、sqlite3、cmake、git、gcc 的托管 CI 服务器

我主持了mycode(用C++编写)在GitHub上,并希望将其链接到托管持续集成(CI)服务器,如TravisCI或BuildHive.然后我希望在我的项目页面上看到“构建通过”或“构建失败”。但是当我检查这两个服务的CI环境时,TravisCI最接近gcc、git、cmake和sqlite3的可用性,但我缺少另一个关键库Qt4,它是构建我的项目所必需的。它也应该是免费的,因为它是一个免费的开源项目。请告诉我该怎么做?谢谢。我需要:gcc、git、cmake、sqlite3和Qt4。 最佳答案 下面的.travis.yml解决了我

c++ - 处理 <file.exe> 时 VS 2012 调试意外的符号读取器错误

我在VisualStudio2012中调试程序时遇到问题-当我尝试通过插入一些断点来调试代码时,它们似乎不起作用-当我将鼠标悬停在它们上面时会弹出一条消息Thebreakpointwillnotcurrentlybehit.Unexpectedsymbolreadererrorwhileprocessing我尝试在互联网上搜索类似的问题,但没有找到任何解决方案我将不胜感激任何帮助,谢谢! 最佳答案 [VS2012]好的,我得到了解决这个问题的答案,所以我会把它贴在这里,这样人们以后就不会遇到这样的问题了。解决办法是改变Debug->

c++ - 从代码中引用 CMAKE 变量

我在Windows上使用CMAKE3.4.3,我想做的是在CMAKE中设置一个路径,并尝试在我的C++文件中引用它。我的尝试如下:在CMakeLists.txt文件中ADD_DEFINITIONS(-DNV12_2_ARGB_PTX_DIR"${CMAKE_CURRENT_SOURCE_DIR}/ptx")现在,我尝试从我的C++文件中引用它,如下所示:#ifdefNV12_2_ARGB_PTX_DIR#definePTX_DIRD_NV12_2_ARGB_PTX_DIR#endif当我尝试将其称为:std::cout我得到错误:'C:/Users/Luca/project/src/l

c++ - "Clang with Microsoft CodeGen"和 "LLVM-vs2014"有什么区别?

在VisualStudio2015或更高版本下,我们可以通过两种方式使用clang:SelectClangwithMicrosoftCodeGenasthePlatformToolset;InstallLLVM-3.8-win64.exe,andselectLLVM-vs2014asthePlatformToolset;我知道这两种方式都使用相同的编译器:clang3.8。但是,我不知道它们之间有什么区别。我的经验表明ClangwithMicrosoftCodeGen比LLVM-vs2014更易于调试。换句话说:IcandebugaprogrambuiltbyClangwithMicr

c++ - 使用 CMake 构建外部项目时作业服务器不可用

我正在尝试使用ExternalProject_add在Linux上使用CMake构建一些外部项目。但是,他们不遵守make-j12命令,并发出警告:‘warning:jobserverunavailable:using-j1.Add`+'toparentmakerule.’这会痛苦地减慢我的构建速度。有没有办法并行构建外部项目?这是一个示例项目:include(ExternalProject)ExternalProject_Add(${TARGET_NAME}-extURL${CMAKE_CURRENT_SOURCE_DIR}/xerces-c-${VERSION_XERCESC}.t

c++ - 使用 CMake 创建 Qt 翻译文件

当我尝试在CMake进程中添加生成翻译的过程时遇到问题。现在我有以下CMakeLists.txt:configure_file(${CMAKE_CURRENT_SOURCE_DIR}/defines.h.cmake${CMAKE_CURRENT_BINARY_DIR}/defines.h)file(GLOB_RECURSEUI_FILES*.ui)file(GLOB_RECURSECODE_FILES*.cpp)qt5_wrap_ui(UI_HEADERS${UI_FILES})#Qt5LinguistToolsfind_package(Qt5LinguistTools)FILE(GL