草庐IT

cmake-custom-command

全部标签

c++ - 在 CMake 中链接 C 和 CXX 文件

我正在使用CMake构建C++应用程序。但是它使用了一些C中的源文件。这是简化的结构:trunk/CMakeLists.txt:project(myapp)set(CMAKE_CXX_FLAGS"${CMAKE_C_FLAGS}-g-Wall")add_subdirectory(srcmyapp)trunk/src/main.cpp:#include"smth/f.h"intmain(){f();}trunk/src/CMakeLists.txt:add_subdirectory(smth)link_directories(smth)set(APP_SRCmain)add_execut

c++ - LNK2019 当包含 asio header 时,使用 cmake 生成的解决方案

我正在尝试使用cmake和boost库将一个大项目从gcc(Linux)移植到msvc(windows)。该项目在gcc上编译和运行良好,但在msvc上它返回以下错误:Dyna.obj:errorLNK2019:unresolvedexternalsymbol"void__cdeclboost::throw_exception(classstd::exceptionconst&)"(?throw_exception@boost@@YAXABVexception@std@@@Z)referencedinfunction"void__cdeclboost::asio::detail::do

c++ - 使用 CMake 添加仅 header 依赖项

我有一个简单的项目,需要三个仅包含头文件的库才能编译:websocketpp,spdlog和nlohmann/json.项目结构如下:└──src├──app│  ├──CMakeLists.txt│  ├──src│  └──test├──CMakeLists.txt├──core│  ├──CMakeLists.txt│  ├──include│  ├──src│  └──test└──vendor├──install.cmake├──nlohmann_json├──spdlog└──websocketpp根CMakeLists.txt如下:cmake_minimum_requir

android - 将 gcc 命令转换为适用于 android ndk 的 CMake

我需要添加一个可以用gcc编译的c工程如下gcc-I/usr/include/epic5.1-I/usr/include/i386-linux-gnu/epic5.1-I./smproject/-ocodecode.c./smproject/smlib.so-lepic5.1我已将code.c文件内容移动到我的AndroidNDK.cpp文件(src/main/cpp/native-lib.cpp)并将所有文件移动到smproject目录到src/main/cpp/smproject/目录这是我的CMakeList.txt内容#FormoreinformationaboutusingC

c++ - 在 CMake 中制作自定义中间体(改进 C 可编译测试器)

所以我们混合了C++/C项目。我想强制执行这一点,即使所有源文件都是.cpp(C++编译),扩展名为“*.h”的源文件是C可编译的(仅对C++文件使用*.hpp)。我想在编译时强制执行它,以便构建返回一个错误(与项目相关,带有完整的行号和C错误和警告)。在配置时运行(恕我直言)只能取得有限的结果。所以我目前有一个脚本可以做到这一点:cmake_minimum_required(VERSION2.8)MACRO(MAKE_C_COMPILE_TESTERproject_nametarget_sourcescvar)SET(CMAKE_CONFIGURABLE_FILE_CONTENT""

c++ - 将预编译的tensorflow与cmake一起使用

我在CLion中设置了一个使用CMake的C++项目。我正在使用各种第3方库,并且还想集成Tensorflow。我试过bazel将Tensorflow编译成一个共享库libtensorflow.so哪种方法可行,但是仍然有很多我必须修复的依赖项(例如,当前的protobuf版本,一旦我这样做了,就会有更多)。有没有办法使用标准的Tensorflowgit存储库并以某种方式链接为python使用而预编译的库?或者有其他方便的方法吗?Python中的Tensorflow非常适合我。 最佳答案 我知道这个答案已经很晚了,但我遇到了你的确切

c++ - 通过相对路径c++ cmake guest查找单元测试的外部测试文件

为C++项目的单元测试访问外部测试文件的正确方法是什么?我正在使用CMake和Gtest。这是目录结构的示例。Project-src-test(unittestshere)-test-data(datafilehere)谢谢! 最佳答案 我更喜欢查找与可执行测试相关的测试数据。为此,我通常在一些TestHelpers.h中定义一个辅助方法,然后传递我要解析的文件的相对路径。inlinestd::stringresolvePath(conststd::string&relPath){namespacefs=std::tr2::sys;

c++ - libstdc++ : DSO missing from command line

我在执行gtkmm应用程序的makefile时遇到问题。我已经实现了一个简单的解决方案,但是,我收到以下错误:g++-Wall-std=c++11pkg-configgtkmm-3.0--cflags-cmain.cppccmain.opkg-configgtkmm-3.0--libs-omain/usr/bin/ld:main.o:undefinedreferencetosymbol'__gxx_personality_v0@@CXXABI_1.3'/usr/lib/x86_64-linux-gnu/libstdc++.so.6:erroraddingsymbols:DSOmissi

c++ - 使用 cmake 和 visual studio 的一个解决方案中的多个项目

我有一个VisualStudio2010解决方案,其中包含5个项目、两个库和三个应用程序(依赖于库)。我现在想将构建系统迁移到CMake(以便也能够在Linux下编译)。我已经找到了如何为一个项目编写CMakeLists.txt并从中创建一个在VS中编译的.sln文件。但是,我找不到解决方案来在CMake文件中指定每个单独的项目,然后自动让CMake创建一个包含这5个项目的VS.sln。我必须如何构建我的项目和CMakelist才能完成此任务? 最佳答案 对于每个图书馆,请调用add_library,对于每个应用程序调用add_ex

c++ - cmake 将 header 包含到每个源文件中

我实际上有一个简单的问题,但找不到答案。也许你可以指出我的拷贝。所以,问题是:是否可以告诉cmake指示编译器在每个源文件的开头自动包含一些header,因此不需要放置#includefoo.h?谢谢! 最佳答案 CMake没有针对此特定用例的功能,但正如您所暗示的那样,GCC等编译器具有-include标志,就像有一个#在源文件中包含“foo.h”,并且由于CMake可以将参数传递给编译器,因此您可以通过add_definitions来完成。Thisanswer涵盖了GCC、Clang和MSVC的标志,应该涵盖很多基础。所以在CM