草庐IT

CMAKE_C_COMPILER

全部标签

C++ 与 git 和 CMake : How to build submodules with specific parameters?

考虑一个在git存储库中组织的C++项目。假设git存储库有一个子模块,(super)项目依赖于该子模块构建了一个库。如果(super)项目不仅依赖于库,还依赖于使用特定(CMake)参数构建的库,那么如何确保在构建(super)项目时使用这些参数构建子模块? 最佳答案 必须将构建选项(如MYLIB_WITH_SQLITE)添加到库的接口(interface)中,即在老式配置的情况下添加到MYLIB_DEFINITIONS变量中-模块,或者到INTERFACE_COMPILE_DEFINITIONS属性,如果库使用install(E

c++ - 使用 GoogleTest 和 CMake 对 C 库进行单元测试

我似乎无法获得正在构建的库以正确链接到我的GoogleTest单元测试二进制文件。它在构建的链接阶段失败:LinkingCXXexecutable../../target/unit_testscd/Users/ebenoist/development/mylib/build/test&&/usr/local/Cellar/cmake/2.8.12.2/bin/cmake-Ecmake_link_scriptCMakeFiles/unit_tests.dir/link.txt--verbose=0Undefinedsymbolsforarchitecturex86_64:"a_funct

c++ - CMake:外部项目的依赖

我想知道如何管理外部项目的依赖关系。假设我有三个项目,每个项目都在不同的存储库中:核心:导出大量有用内容的库。Lib1:包含一些特定类的库(取决于Core)。可执行:使用来自Core和Lib1的内容。每个项目及其CMakeLists.txt。使用find_package并在CMake上定义路径,我可以毫无问题地构建每个项目并安装它(我按照thistuto为库构建.cmake文件)现在我正在努力使这个过程尽可能简单,我正在引入ExternalProject_Add宏,这样人们只需克隆Executable存储库并借助CMake文件Lib1和Core也被下载、编译和链接。问题是Executa

使用 CMake 和 Ryppl 的 C++ 库生态系统

我有兴趣构建一个跨平台的C++库并以源代码形式分发它。我希望这个库的使用者能够在他们正在使用的任何平台上以及他们针对的任何平台上非常容易地获取它、构建它并在他们的软件中使用它。同时在构建我的库的同时,我也希望能够通过类似的机制使用其他流行的OSS库。我看到了CMake和Ryppl是出于这些意图而创建的,并且在某种程度上它们确实解决了其中的一些问题,尤其是构建问题。但我不太清楚如何才能实现上述目标。可以选择CMake作为构建解决方案吗?如何解决库的获取和分发问题?简单地将源代码托管在某个地方,让人们发现、下载和构建它们?或者有更好的方法吗? 最佳答案

c++ - 使用 CMake 为不同的构建类型创建构建树

我知道如何根据构建类型(发布、调试等)让CMake输出库和容器,但是,为了减少(重新)编译时间,我想让CMake在不同的子文件夹中构建它们。说我有这种树|-CMakeLists.txt|-build/|-src/如果我有调试、发布和relwithdebinfo构建,我希望CMake自动为我创建一棵像这样的树|-CMakeLists.txt|-build/|---Debug/|---Release/|---RelWithDebInfo/|-src/等等。这可能吗,如果可以,我怎样才能实现我的目标?我不想要像“你应该从不同的文件夹运行CMake”这样的答案,因为对于visualstudio

c++ - 带有 Visual Studio 和 cmake 的 CUDA

我正在使用CUDA8.0和VisualStudio2013。到目前为止,我一直在使用CMake构建我的VS-Solutions,并且运行良好。通常使用以下代码片段构建cuda项目:FIND_PACKAGE(CUDAREQUIRED)INCLUDE_DIRECTORIES(${CUDA_INCLUDE_DIRS})link_directories(${CUDA_INCLUDE_DIRS}/../lib/x64)CUDA项目正在运行,编译和运行没有任何问题。但是我在项目属性中缺少CUDAC/C++字段。当我直接在VS中创建一个VS-Solution时,我可以选择NVIDIA/CUDA8.0

c++ - 执行 cmake 目标的输出作为另一个依赖项

我有以下目录结构:.├──CMakeLists.txt├──generator│  ├──CMakeLists.txt│  └──main.cpp├──include└──src├──CMakeLists.txt└──mylib.cpp我想构建generator,然后使用generator生成将用于构建mylib的源文件。我试过这个:生成器/CMakeLists.txt:add_executable(genmain.cpp)add_custom_command(OUTPUT${CMAKE_BINARY_DIR}/generated.cppDEPENDSgenCOMMAND${CMAKE

c++ - 可以使用位置信息编写改进的 cmake 日志记录宏吗?

在调试cmake代码的时候,我发现自己写了类似下面的东西:message("[some_filename.cmake]:somemessageaboutwhatisgoingonhere.")在C++中,我使用宏来自动记录文件名和行号-这在cmake中可行吗?理想情况下,我想编写一个包含以下内容的宏:log_info("somemessageaboutwhatisgoingonhere.")它将打印到控制台:|info|some_filename.cmake[72]somemessageaboutwhatisgoingonhere. 最佳答案

c++ - 为什么 cmake_link_libraries 包含静态库?

我希望我的可执行文件再次链接到共享库(libmy_so.so),而共享库又是使用静态库(libmy_static_lib.a)构建的。当我做的时候target_link_libraries(my_exemy_so)我在编译时看到cmake在构建行上添加了libmy_static_lib.a。这不是我想要的,我不明白为什么需要这样做。有没有办法解决?LINK_PRIVATE似乎没有任何区别。我使用CMake2.8.9。 最佳答案 来自CMakedocumentationfortarget_link_libraries:target_l

c++ - cmake编译组

我有一个项目,其中编译生成许多可执行文件。我使用cmake生成Makefile。然后当我说make时,它们都被编译了。我知道我可以使用maketarget1来编译所需的目标。但我想将我所有的目标分成几组,并能够使用,比如makegroup_A来编译目标的一个子集。如何实现?该项目用C++编写,在Linux和OSX下开发。 最佳答案 查看CMake文档中的add_custom_target和add_dependencies。您可以将一个组添加为自定义目标,并将您想要构建的目标作为该组的依赖项。http://www.cmake.org/