草庐IT

vs-cmake-examples

全部标签

c++ - 依赖于另一个库的库上的 CMake 和 target_link_libraries

我正在使用CMake构建不同的C++库,整个事情可以总结如下:liba:不依赖于任何东西libb:依赖于a我现在需要创建一个依赖于b的库c。我只需要在b上链接c吗?或者在b和a上,因为b依赖于a?target_link_libraries(cb)还是target_link_libraries(cba)?谢谢 最佳答案 在你的代码构建库b中,你应该告诉CMakeb依赖于a:target_link_libraries(ba)然后,您的库/应用程序c可以仅链接到它使用的内容,而不必担心依赖项的依赖关系:target_link_librar

c++ - 从另一个 CMakeLists.txt 将变量读入 cmake

使用Ubuntu、C++和cmake,我想创建一个基于代码的程序Alpha对于另一个程序,Beta。我已经有了Beta的源代码,我需要为使用现有代码的Alpha编写代码。我试图保持一切整洁,所以我有一个单独的目录用于Alpha和Beta源文件,Alpha.cpp和Beta.cpp.这是我的目录结构:/CMakeLists.txt/Alpha.cpp(themainfunction)/Beta/CMakeLists.txt/Beta.cppAlpha的CMakeLists.txt文件如下所示:cmake_minimum_required(VERSION2.8)project(Alpha)

c++ - 在 OSX 上使用 CMake 构建 Unity native 包

我有一个Xcode项目,它构建了一个包含库的包。我使用以下菜单创建了项目:NewProject->Framework&Library->Bundle为了提供更多背景信息,我想创建一个nativepluginforUnity.目前header非常简单,仅包含一个header和一个源文件。我现在希望能够使用CMake生成一个类似的项目,但我正在努力让它发挥作用。我的CMake文件归结为:cmake_minimum_required(VERSION3.3)project(Plugin)set(CMAKE_CXX_FLAGS"${CMAKE_CXX_FLAGS}-std=c++11")set(

c++ - Emscripten 的 CMake 项目

我想让CMake和Emscripten成为friend。在Emscripten项目网站上没有找到更多或更少的信息文档,但他们提供了CMake工具链文件,所以我认为它应该是可能的。到目前为止,没有高级参数的非常基本的编译工作正常,但我在使用embind和预加载文件时遇到问题。链接过程似乎错过了Emscripten“二进制文件”,并为所有与嵌入相关的函数产生警告,如下所示:warning:unresolvedsymbol:_embind_register_class这导致在rowser中加载已编译的JS文件时出现相应的错误。编译过程中没有生成.data文件。我创建了一个极简示例,其中包括两

c++ - 如何配置 CMake 以使用 -fPIC 构建库?

这个问题在这里已经有了答案:HowtolinkagainstPICversionofalibrary'sdependencyinCMake?(1个回答)关闭6年前。我正在尝试创建一个指定了-fPIC的静态库。add_library(cpp-netlib_picSTATIC${SRCS})set_property(TARGETcpp-netlib_picPROPERTYPOSITION_INDEPENDENT_CODE)这行不通。库(cpp-netlib_pic)是在没有-fPIC标志的情况下构建的。链接到cpp-netlib_pic的其他目标做但是,将-fPIC添加到他们的编译器标志中

c++ - VS : unexpected optimization behavior with _BitScanReverse64 intrinsic

以下代码在Debug模式下工作正常,因为定义了_BitScanReverse64如果没有设置Bit则返回0。CitingMSDN:(返回值是)“如果设置了索引则为非零,如果未找到设置位则为0。”如果我在Release模式下编译这段代码它仍然有效,但如果我启用编译器优化,例如\O1或\O2索引不为零并且assert()失败。#include#includeusingnamespacestd;intmain(){unsignedlongindex=0;_BitScanReverse64(&index,0x0ull);cout这是预期的行为吗?我正在使用VisualStudioCommuni

c++ - CMake:如何指定 ctest 应在其中查找可执行文件的目录?

我想将ctest集成到一个c++/c项目中。我使用谷歌测试来编写单元测试。我的CMakeLists.txt的相关部分如下所示:...#######CREATINGEXE#######add_executable(test_exemain.cpptest.cpp)target_link_libraries(test_exeGTest::GTestGTest::Main)set_target_properties(test_exePROPERTIESRUNTIME_OUTPUT_DIRECTORY${UNIT_TEST_BIN_OUTPUT_DIR})add_test(test_exete

c++ - CMake 和 Visual Studio : How to get a quick, 安静的命令行构建?

我有一个cmake项目,它成功地完成了我想要的一切。但是我有大约100个文件,我厌倦了看到生成的巨大输出,每次我只需要重新编译一个文件时每个文件30行。明确地说,我正在编译cmake--build.以获得此结果。我需要传递给编译器(或MSBuild)以跳过检查未更改文件的打印的参数是什么?在VisualStudio中编译项目不会产生所有这些视觉垃圾。这是我为每个未更改的文件获得的输出:Project"C:\noscan\working\proj\build\ALL_BUILD.vcxproj"(1)isbuilding"C:\noscan\working\proj\build\os\s

c++ - 析构函数 : triviality vs implicit definition

根据我对标准的理解,普通析构函数是一种隐式声明的析构函数,其类只有基本和非静态成员以及普通析构函数。鉴于此定义的递归性,在我看来,唯一的“递归停止”条件是找到具有非隐式声明的析构函数(即用户声明的)的基类或非静态成员。如果那是对的,那应该意味着一个普通的析构函数是一个“不需要做任何事情”的析构函数,因此它将被声明(隐式地)但不被定义。换句话说:根据标准定义,隐式定义析构函数(即“它做某事”)不能是微不足道的说法是否正确?很抱歉提出这种愚蠢的问题,但我想澄清一下我的想法...... 最佳答案 没有。隐式定义的平凡析构函数根据定义是平凡

c++ - VC++ 项目 : MSXML vs any other XML libraries

我们知道基于COM技术的MSXML。我们想将它用于即将开始的VC++项目。与MSXML相比,还有其他XML库做得更好吗? 最佳答案 TinyXML-一个C++开源库 关于c++-VC++项目:MSXMLvsanyotherXMLlibraries,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/2403567/