草庐IT

language-cmake

全部标签

c++ - 默认在 CMake 中优化

我有一个使用CMake作为其构建系统的C++项目。我想要以下行为:如果cmake被调用为cmake..,那么CMAKE_CXX_FLAGS是-O3-Wall-Wextra如果cmake被调用为cmake..-DCMAKE_BUILD_TYPE=Debug,那么CMAKE_CXX_FLAGS是-g-Wall-Wextra我尝试了以下message(STATUS"Buildtype:${CMAKE_BUILD_TYPE}")set(CMAKE_CXX_FLAGS"-O3-Wall-Wextra")set(CMAKE_CXX_FLAGS_DEBUG"-g-Wall-Wextra")但这有一个

c++ - 默认在 CMake 中优化

我有一个使用CMake作为其构建系统的C++项目。我想要以下行为:如果cmake被调用为cmake..,那么CMAKE_CXX_FLAGS是-O3-Wall-Wextra如果cmake被调用为cmake..-DCMAKE_BUILD_TYPE=Debug,那么CMAKE_CXX_FLAGS是-g-Wall-Wextra我尝试了以下message(STATUS"Buildtype:${CMAKE_BUILD_TYPE}")set(CMAKE_CXX_FLAGS"-O3-Wall-Wextra")set(CMAKE_CXX_FLAGS_DEBUG"-g-Wall-Wextra")但这有一个

c++ - 使用 CMake 将几个静态库合并为一个

我有一个与described非常相似的问题在cmake邮件列表中,我们有一个依赖于许多静态库的项目(所有这些库都是从各个子模块中的源代码构建的,每个子模块都有自己的CMakeLists.txt描述每个库的构建过程),我想将它们组合成一个静态库发布给消费者的库。我的库的依赖项可能会发生变化,我不想让这些变化进一步加重开发人员的负担。简洁的解决方案是将所有库捆绑到一个库中。有趣的是,当将目标设置为mylib并像这样使用它时,target_link_libraries命令并没有结合所有的静态数据。.target_link_libraries(mylibabcd)但是,奇怪的是,如果我将myl

c++ - 使用 CMake 将几个静态库合并为一个

我有一个与described非常相似的问题在cmake邮件列表中,我们有一个依赖于许多静态库的项目(所有这些库都是从各个子模块中的源代码构建的,每个子模块都有自己的CMakeLists.txt描述每个库的构建过程),我想将它们组合成一个静态库发布给消费者的库。我的库的依赖项可能会发生变化,我不想让这些变化进一步加重开发人员的负担。简洁的解决方案是将所有库捆绑到一个库中。有趣的是,当将目标设置为mylib并像这样使用它时,target_link_libraries命令并没有结合所有的静态数据。.target_link_libraries(mylibabcd)但是,奇怪的是,如果我将myl

c++ - 在 CMake 中强制使用 C99(使用 'for' 循环初始声明)

我一直在寻找一种可移植的方式来强制CMake启用编译器的C99功能,以避免例如以下gcc错误:error:‘for’loopinitialdeclarationsareonlyallowedinC99modefor(ints=1;sStepNumber;s++){^我也不想检查哪个编译器并附加如下内容:set(CMAKE_C_FLAGS"-std=c99")#thatwouldbebad所以我找到了这篇文章:EnablingC99inCMake以及相关的功能请求:0012300:CMakehasnocross-platformwaytoaskforC99.在这个Mantis错误中,我了

c++ - 在 CMake 中强制使用 C99(使用 'for' 循环初始声明)

我一直在寻找一种可移植的方式来强制CMake启用编译器的C99功能,以避免例如以下gcc错误:error:‘for’loopinitialdeclarationsareonlyallowedinC99modefor(ints=1;sStepNumber;s++){^我也不想检查哪个编译器并附加如下内容:set(CMAKE_C_FLAGS"-std=c99")#thatwouldbebad所以我找到了这篇文章:EnablingC99inCMake以及相关的功能请求:0012300:CMakehasnocross-platformwaytoaskforC99.在这个Mantis错误中,我了

c++ - 如何在 Windows 上使用 CMake + CPack + NSIS 创建安装程序?

我想为我正在构建的基于C++的系统创建一个跨平台安装程序。我使用CMake来构建一切,如果我可以使用CPack来制作安装程序,那就太好了。我已经让CPack在OSX上运行,但我无法让它在Windows上运行。为了方便起见,我尝试在http://www.cmake.org/Wiki/CMake:Packaging_With_CPack获取示例使用NSIS安装程序软件。配置后我在任何地方都找不到NSIS安装程序(使用VS2010Win64生成器)。也许我很困惑,但我认为可以仅使用源代码、CMake、CPack和NSIS创建安装包,而无需VisualStudio。这可能吗?完整教程的链接(h

c++ - 如何在 Windows 上使用 CMake + CPack + NSIS 创建安装程序?

我想为我正在构建的基于C++的系统创建一个跨平台安装程序。我使用CMake来构建一切,如果我可以使用CPack来制作安装程序,那就太好了。我已经让CPack在OSX上运行,但我无法让它在Windows上运行。为了方便起见,我尝试在http://www.cmake.org/Wiki/CMake:Packaging_With_CPack获取示例使用NSIS安装程序软件。配置后我在任何地方都找不到NSIS安装程序(使用VS2010Win64生成器)。也许我很困惑,但我认为可以仅使用源代码、CMake、CPack和NSIS创建安装包,而无需VisualStudio。这可能吗?完整教程的链接(h

c++ - 如何让 CMake 创建一个 dll 及其匹配的 lib 文件?

我正在使用CMake通过VisualStudio2010创建一个共享库。该解决方案输出一个dll文件,但不是一个匹配的lib文件。如何告诉CMake生成lib文件,以便我可以将其他项目链接到dll? 最佳答案 首先检查您的共享库中是否至少有一个导出符号。如果dll不导出符号,VisualStudio不会生成.lib文件。接下来,检查您的cmake文件-可能您已设置共享库目标的CMAKE_ARCHIVE_OUTPUT_DIRECTORY变量或ARCHIVE_OUTPUT_DIRECTORY属性。如果设置了这些变量/属性,那么Visua

c++ - 如何让 CMake 创建一个 dll 及其匹配的 lib 文件?

我正在使用CMake通过VisualStudio2010创建一个共享库。该解决方案输出一个dll文件,但不是一个匹配的lib文件。如何告诉CMake生成lib文件,以便我可以将其他项目链接到dll? 最佳答案 首先检查您的共享库中是否至少有一个导出符号。如果dll不导出符号,VisualStudio不会生成.lib文件。接下来,检查您的cmake文件-可能您已设置共享库目标的CMAKE_ARCHIVE_OUTPUT_DIRECTORY变量或ARCHIVE_OUTPUT_DIRECTORY属性。如果设置了这些变量/属性,那么Visua