草庐IT

vs-cmake-examples

全部标签

c++ - 在哪里放置 emscripten 和 CMake 的库

当我想在“普通”程序中使用库时,我使用apt安装它们apt-getinstalllibjsoncpp-devapt-getinstalllibassimp-dev然后在CMakeLists.txt中查找FIND_LIBRARYFIND_LIBRARY(JSONCPP_LIBRARYNAMESjsoncpp)TARGET_LINK_LIBRARIES(hello${JSONCPP_LIBRARY})FIND_LIBRARY(ASSIMP_LIBRARYNAMESassimp)TARGET_LINK_LIBRARIES(hello${ASSIMP_LIBRARY})当使用emscripte

c++ - OpenSSL 使用 Cmake 从源代码编译?

我想将OpenSSL引入我们的跨平台项目并从源代码编译。我们有很多平台(Windows、Mac、iOS、Android、XamarinAndriod),因此使用维护/更新二进制文件可能会让人头疼。我们正在使用cmake。有没有人用Cmake成功编译过OpenSSL?有例子吗? 最佳答案 openssl-cmake(1)项目是一个选项。这为openssl提供了一个cmake构建系统。您也不再依赖PERL。 关于c++-OpenSSL使用Cmake从源代码编译?,我们在StackOverfl

c++ - b2 vs bjam 用于构建 Boost 库

我使用b2.exe和bjam.exe为VS2013构建了64位架构的Boost。根据Boostdocumentation,b2必须在bjam上使用。我注意到的差异是:b2中的.lib文件的大小与相应的bjam文件的大小不同。使用bjam提供动态.lib库(不带-s标记,如here所述),但它不提供要链接到的.dll文件(那么现在该怎么办?),而使用b2会同时提供静态库和动态库以及.dll文件。但使用b2的问题是,它提供了两个动态.lib文件-一个以boost_xxxx.lib开头,另一个以libboost_xxxx.lib开头,两者大小不同。这是为什么?我还提到了使用构建选项--bui

c++ - 当我从虚拟基派生 D 时,为什么 VS2015 中的 sizeof(D) 增加了 8 个字节?

我正在使用C++14§3.11/2中的示例:structB{longdoubled;};structD:virtualB{charc;}在clang、g++和VS2015中运行下面的代码片段之后#includestructB{longdoubled;};structD:/*virtual*/B{charc;};intmain(){std::cout我得到了以下结果:clangg++VS2015sizeof(longdouble)16168alignof(longdouble)16168sizeof(B)16168alignof(B)16168sizeof(D)323216alignof

c++ - 编译时抽象类处理中的 clang vs gcc

其中之一issuesnlohmann/json开源库引起了我的注意。我有一个案例的最小复制品doesnotcompile在少数版本的桌面gcc(4.8、4.9,也尝试过5+)下,但使用macclang和Androidndk的gcc4.9编译得很好#includestructbase{virtualvoidfoo()=0;};intmain(){(void)numeric_limits::is_signed;}GCC正在尝试实例化std::numeric_limits使用基类而不是派生类:/usr/include/c++/4.8/limits:Ininstantiationof'stru

c++ - CMake 生成的 Xcode 项目无法找到从 Xcode 构建的二进制 "Products"

我正在尝试使用CMake生成的Xcode项目。构建时一切看起来都很好,除了Xcode找不到构建的二进制文件。下面是我在成功构建产品后截取的屏幕截图。我可以在项目源目录中看到它们。但是,请注意Xcode显示红色“HelloWorld”,这意味着它找不到产品。配置:Lion10.7.2上的CMake2.8.6和Xcode4.2这是CMakeLists.txtproject(HelloWorld)add_executable(${PROJECT_NAME}HelloWorld.cpp)这是HelloWorld.cpp的源码#includeintmain(){std::cout我尝试直接从Xc

c++ - 使用 GTest 和 GMock : shared vs. 静态库进行测试

我认为这个问题可能违反了网站的一些问答标准,因为我可能收到的答案可能被视为意见驱动。尽管如此,它还是...假设我们正在处理一个C++项目,使用CMake来驱动构建/测试/打包过程,并使用GTest和GMock进行测试。进一步假设我们项目的结构如下所示:cool_project||--source||||--module_foo||||||--(bunchofsourcefiles)||||--module_bar||||--(yetmoresourcefiles)||--tests||--module_foo||||--(testsformodule_foo)||--module_ba

c++ - 如何使用 CMake 部署 QWindowsIntegrationPlugin

我正在使用CMake构建Qt应用程序。我的项目可以编译,并且由于“fixup_bundle()”,makeinstall将所需的库复制到我的可执行文件旁边。太棒了!唯一的问题是,当我执行它时,我得到了可怕的“此应用程序无法启动,因为它无法找到或加载Qt平台插件“windows”。”错误。确实,手动将qwindows.dll复制到可执行文件旁边的“平台”目录中可以解决此问题。现在,我如何告诉CMake自动执行此操作?来自Qt的信息不多:PluginsarealsoavailableasIMPORTEDtargetsinCMake.TheQtNetwork,QtSQL,QtGUI,andQ

c++ - dladdr : pointer-to-function vs pointer-to-object

希望这是一个相当简单的C++问题(而不是语言律师问题)。如何在C++中使用GNU扩展dladdr?通常人们会用C编写以下内容:#ifndef_GNU_SOURCE#define_GNU_SOURCE#endif#includestaticvoidwhere_am_i(){}intmain(){Dl_infoinfo;dladdr((void*)&where_am_i,&info);return0;}但是使用clang可以看到转换可能无效:$clang--versionDebianclangversion3.6.2-3(tags/RELEASE_362/final)(basedonLLV

c++ - enable_if : minimal example for void member function with no arguments

我试图更好地理解C++11中的std::enable_if并且一直在尝试编写一个最小的示例:一个类A带有成员函数voidfoo()根据类模板中的类型T具有不同的实现。下面的代码给出了期望的结果,但我还没有完全理解它。为什么版本V2有效,但V1无效?为什么需要“冗余”类型U?#include#includetemplateclassA{public:A(Tx):a_(x){}//EnablethisfunctionifT==int/*V1*///template::value,int>::type=0>/*V2*/template::value,int>::type=0>voidfoo(