Tag: cmake

在CMake中设置通用编译标志的现代方法是什么?

CMake提供了多种机制来获取编译器的标志: CMAKE_<LANG>_FLAGS_<CONFIG>variables add_compile_options命令 set_target_properties命令 在现代使用中,是否有一种方法比另一种方法更受欢迎? 如果是这样的话 另外,如何将这种方法用于多种configuration系统,如MSVC?

cmake CFLAGS CXXFLAGS修改

我只是想debugging一些在Linux上运行的代码,我需要一个debugging版本( -O0 -ggdb )。 所以我把这些东西添加到我的CMakeLists.txt : set(CMAKE_BUILD_TYPE DEBUG) set(CMAKE_C_FLAGS "-O0 -ggdb") set(CMAKE_C_FLAGS_DEBUG "-O0 -ggdb") set(CMAKE_C_FLAGS_RELEASE "-O0 -ggdb") set(CMAKE_CXX_FLAGS "-O0 -ggdb") set(CMAKE_CXX_FLAGS_DEBUG "-O0 -ggdb") set(CMAKE_CXX_FLAGS_RELEASE "-O0 -ggdb") 当我试图编译我打开详细使用make VERBOSE=1我观察输出,就像这样 … /usr/bin/c++ -D_BSD_SOURCE **-O0 -ggdb** -Wnon-virtual-dtor -Wno-long-long -ansi -Wundef -Wcast-align -Wchar-subscripts -Wall -W -Wpointer-arith -Wformat-security -fno-exceptions -DQT_NO_EXCEPTIONS -fno-check-new -fno-common -Woverloaded-virtual -fno-threadsafe-statics -fvisibility=hidden -fvisibility-inlines-hidden **-g -O2** -fno-reorder-blocks -fno-schedule-insns […]

在执行之前进行cmake打印命令

我正在开发一个用cmake在linux上构build的大型C ++项目。 Cmake运行正常,在模块和应用程序树中生成了一大堆Makefiles。 运行gnu会导致链接器错误。 在运行之前,怎样才能打印出确切的命令? -d选项不会打印命令,但大量信息没有帮助。 -n选项打印所有的命令,但不运行它们,所以我不能告诉是什么问题。 从make -n检查stdout,我没有看到任何相关的命令。 我怀疑有些命令会根据早期命令的结果而改变,而Makefiles的层次结构使得很难分辨真正发生的事情。 在make的手册页中我没有看到任何其他的选项。

用cmake创build一个共享库

我写了一个库,使用自编的Makefile进行编译,但现在我想切换到cmake。 树看起来像这样(我删除了所有不相关的文件): . ├── include │ ├── animation.h │ ├── buffers.h │ ├── … │ ├── vertex.h │ └── world.h └── src ├── animation.cpp ├── buffers.cpp ├── … ├── vertex.cpp └── world.cpp 所以我想要做的只是将源代码编译成共享库,然后将其与头文件一起安装。 我发现的大多数例子都是用一些共享库编译可执行文件,但从来不只是一个普通的共享库。 如果有人能够告诉我一个使用cmake的非常简单的库,这也是有帮助的,所以我可以使用这个例子。

如何从cmake文件(GLOB …)模式中排除单个文件?

我的CMakeLists.txt包含这一行: file(GLOB lib_srcs Half/half.cpp Iex/*.cpp IlmThread/*.cpp Imath/*.cpp IlmImf/*.cpp) 和IlmImf文件夹包含b44ExpLogTable.cpp ,我需要从构build中排除。 如何实现?

cmakevariables作用域,add_subdirectory

我有一个CMakeLists.txt在我的项目根目录和一个在我的/ src文件夹。 / src文件夹中的一个只包含一个带.cpp文件( set (SOURCEFILES main.cpp foo.cpp) )的variables,并且在根CMakeLists.txt中,我做了add_subdirectory(src) ,后来我做了add_executable(MyApp ${SOURCEFILES}) 。 但cmake给我的错误 调用的add_executable参数数量不正确,没有提供源代码 如何获得cmake来查看variables? 我读了cmake只知道全局variables,但显然不是这样的…

如何将目录从源码树复制到二叉树?

将源目录中的目录复制到二叉树。 例如:如何将www复制到bin文件夹。 work ├─bin └─src ├─doing │ └─www ├─include └─lib 谢谢。

CMake中的函数与macros

CMake 2.8.12的官方文档讲述了macro 当它被调用时,macros中logging的命令首先通过用传递的参数replaceforms参数($ {arg1})来修改,然后作为普通命令调用。 和关于function 当它被调用时,函数中logging的命令首先通过用传递参数replaceforms参数($ {arg1})来修改,然后作为普通命令调用。 显然,两个引号几乎相同,但是让我困惑。 当像macros一样调用一个函数时,是否首先replace参数?

CMake和查找其他项目及其依赖项

设想以下情况:项目A是一个共享库,它有几个依赖关系(LibA,LibB,LibC)。 项目B是对项目A具有依赖性的可执行文件,因此也需要项目A的所有依赖项才能生成。 另外,这两个项目都是使用CMake构build的,不需要安装项目A(通过“安装”目标)以便项目B使用它,因为这对开发人员来说可能是一个麻烦。 所以问题是,使用CMake解决这些依赖问题的最好方法是什么? 理想的解决scheme将尽可能简单(虽然不简单),并且需要最less的维护。

CMake:如何在CMakeLists.txt中设置LDFLAGS?

我通过CMAKE_C_FLAGS在CMake中设置了CFLAGS。 像这样设置LDFLAGS?