草庐IT

CMAKE_EXPORT_COMPILE_COMMANDS

全部标签

c++ - Qt 5 cmake 失败,未定义对 hello world 上的 vtable 的引用,其中 inc 和 src 作为子目录

更新2在搞砸了一点(以及对生成的Makefile进行了一些编辑)之后,看起来正在发生的事情是moc没有正确处理MainWindow.h(包含在main.cpp和MainWindow.cpp除非它与包含它的源文件位于同一文件夹中。Moc在MainWindow.cpp上运行,不处理包含,因此看不到Q_OBJECT宏,因此继续生成一个空的输出文件。我不确定moc是否通常处理包含或是否只是扫描目录,但无论哪种方式,需要mocing但位于其他目录中的header都不会被处理!更新问题似乎与moc产生的输出有关。在第一种情况下(编译的那个),hello-world_automoc.cpp和moc_

c++ - CMake 和绝对标题路径

我正在尝试使用CMake构建我的C++项目,但我在header路径中遇到了问题。由于我使用了许多在多个目录中组织的类,因此我所有的包含语句都使用绝对路径(因此无需使用“../../”),但是当尝试制作CMake生成的Makefile时它只是不起作用。有谁知道如何在CMakeLists.txt中指定所有包含都使用绝对路径?我尝试制作时的输出~/multiboost/BanditsLS/GenericBanditAlgorithmLS.h:45:25:Utils/Utils.h:Nosuchfileordirectory~/multiboost/BanditsLS/GenericBandi

c++ - CMake 和绝对标题路径

我正在尝试使用CMake构建我的C++项目,但我在header路径中遇到了问题。由于我使用了许多在多个目录中组织的类,因此我所有的包含语句都使用绝对路径(因此无需使用“../../”),但是当尝试制作CMake生成的Makefile时它只是不起作用。有谁知道如何在CMakeLists.txt中指定所有包含都使用绝对路径?我尝试制作时的输出~/multiboost/BanditsLS/GenericBanditAlgorithmLS.h:45:25:Utils/Utils.h:Nosuchfileordirectory~/multiboost/BanditsLS/GenericBandi

c++ - 无法使用 cygwin 运行 cmake

我在cygwin下遇到cmake问题。我安装了cygwin的CMake包和普通的CMake包(在Windows中),每次我运行CMake来配置项目时,它都会显示以下内容:$CMakeError:CMakewasunabletofindabuildprogramcorrespondingto"UnixMakefiles".CMAKE_MAKE_PROGRAMisnotset.Youprobablyneedtoselectadifferentbuildtool.Missingvariableis:CMAKE_C_COMPILER_ENV_VARCMakeError:Errorrequire

c++ - 无法使用 cygwin 运行 cmake

我在cygwin下遇到cmake问题。我安装了cygwin的CMake包和普通的CMake包(在Windows中),每次我运行CMake来配置项目时,它都会显示以下内容:$CMakeError:CMakewasunabletofindabuildprogramcorrespondingto"UnixMakefiles".CMAKE_MAKE_PROGRAMisnotset.Youprobablyneedtoselectadifferentbuildtool.Missingvariableis:CMAKE_C_COMPILER_ENV_VARCMakeError:Errorrequire

c++ - 使用 cmake 构建具有 "experimental/filesystem"的项目

我需要在我的项目中添加一个“实验/文件系统”header#includeintmain(){autopath=std::experimental::filesystem::current_path();return0;}所以我使用了-lstdc++fs标志并与libstdc++fs.a链接cmake_minimum_required(VERSION3.7)project(testcpp)set(CMAKE_CXX_FLAGS"-std=c++14-lstdc++fs")set(SOURCE_FILESmain.cpp)target_link_libraries(${PROJECT_NA

c++ - 使用 cmake 构建具有 "experimental/filesystem"的项目

我需要在我的项目中添加一个“实验/文件系统”header#includeintmain(){autopath=std::experimental::filesystem::current_path();return0;}所以我使用了-lstdc++fs标志并与libstdc++fs.a链接cmake_minimum_required(VERSION3.7)project(testcpp)set(CMAKE_CXX_FLAGS"-std=c++14-lstdc++fs")set(SOURCE_FILESmain.cpp)target_link_libraries(${PROJECT_NA

c++ - Cmake 生成器表达式

我尝试了很长时间来了解generatorexpressions的好处如$在CMake中,何时以及如何使用它们。任何人都可以用一些例子清楚地解释它。非常感谢提前 最佳答案 CMake确实首先解析您项目中的CMakeLists.txt文件-名为“配置阶段”-然后生成构建环境-名为“生成阶段”。所以基本上,生成器表达式适用于只有生成器才能知道的所有内容:目标输出的名称和路径(主要在交叉编译和多配置环境中)或者更一般地说,生成器评估以将编译器/链接器调用混合在一起的任何目标属性以下是我在项目中使用生成器表达式的示例:在可执行文件旁边复制文件

c++ - Cmake 生成器表达式

我尝试了很长时间来了解generatorexpressions的好处如$在CMake中,何时以及如何使用它们。任何人都可以用一些例子清楚地解释它。非常感谢提前 最佳答案 CMake确实首先解析您项目中的CMakeLists.txt文件-名为“配置阶段”-然后生成构建环境-名为“生成阶段”。所以基本上,生成器表达式适用于只有生成器才能知道的所有内容:目标输出的名称和路径(主要在交叉编译和多配置环境中)或者更一般地说,生成器评估以将编译器/链接器调用混合在一起的任何目标属性以下是我在项目中使用生成器表达式的示例:在可执行文件旁边复制文件

c++ - 如何将 CMake 参数转发到 ExternalProject

我已经(大部分)成功地为googletest设置了ExternalProject_Add。但是,我注意到诸如我选择的C++编译器、构建类型等内容不会自动转发到ExternalProject。我可以通过在对ExternalProject_Add的调用中将其添加到CMAKE_ARGS来轻松添加任何给定标志,如下所示:CMAKE_ARGS-DBUILD_SHARED_LIBS:BOOL=${BUILD_SHARED_LIBS}但是,这需要我枚举所有应该转发到googletests的CMake调用的可能参数,而且这个列表非常庞大。我还需要为我想要的每个其他ExternalProject_Add