Tag: cmake

CMake顶级XCode项目属性

我正在使用Cmake和Xcode生成一个c ++ / c“项目”(my_project)和一些c ++ / c“目标”(一个是二进制文件,其余是库) 我的CMakeLists.txt看起来像这样: project(my_project) add_subdirectory(library_projectA) add_subdirectory(library_projectB) add_subdirectory(binary_project) 每个子目录都有一个CMakeLists.txt,其中包含: add_library(library_projectA) 要么 add_executable(binary_project) 这产生了一个顶级my_project.xcodeproj,它引用了子项目。 Xcode具有此Hierarchical属性inheritance(左侧字段优先于右侧字段): 目标,项目,默认 我想更改“项目”字段,即my_project。 这应该会影响所有目标。 我试过这个: add_custom_target(my_project) add_target_properties(my_project PROPERTIES XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH “NO”) 但这不起作用。 请注意,如果我把它放在其中一个“目标”中: add_target_properties(binary_project PROPERTIES XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH “NO”) 然后这可行,但只适用于“目标” 如果不清楚,我很乐意提供一个有效的例子,但这需要一些时间…… 关于机会,任何人都知道更快地修复整个问题,我想要一个干净的Xcode安装,而不是没有提出这个(或任何其他)警告: 项目“my_project”会覆盖“架构”设置。 这将删除该设置并允许Xcode根据可用于活动平台和部署目标的硬件自动选择体系结构。

cmake忽略-D CMAKE_BUILD_TYPE = Debug

我只是想在调试模式下构建一个cmake项目来启用断言。 我尝试了以下版本: cmake -D CMAKE_BUILD_TYPE:STRING=Debug -L ../../ cmake -DCMAKE_BUILD_TYPE:STRING=Debug -L ../../ cmake -DCMAKE_BUILD_TYPE=Debug -L ../../ 不幸的是,没有一个具有所需的效果 – CMAKE_BUILD_TYPE设置为Debug (因此NDEBUG -flag不会传递给gcc)。 另外,我将variable_watch(CMAKE_BUILD_TYPE)添加到我的主CMakeLists.txt以检查值是否被覆盖了某处。 但是第一个输出是我主要的READ_ACCESS另外我将variable_watch(CMAKE_BUILD_TYPE)添加到我的主CMakeLists.txt ,其中的值已经是Release 。 有人知道为什么cmake会忽略配置吗? 我正在使用cmake版本2.8.7。 提前感谢您的帮助!

强制CMake使用Visual Studio将C ++编译器用于C文件

我已生成.h和.c文件,必须使用Visual Studio编译为C ++文件。 我听说我可以做类似set_source_files_properties( ${SOURCES} PROPERTIES LANGUAGE “CXX” )事情。 与此同时,我已经读到我不应该这样做,因为它只应该在异国情调中使用。 那么,强制CMake生成将C文件编译为C ++文件的VS项目的最佳方法是什么? PS:重命名生成的文件不是一个选项。

使用CMake安装其他文件

我试图提供一些带有一些可执行文件的“源”文件。 我想知道是否有办法将这些源文件复制到构建目录(从源目录),然后使用CMake复制到安装目录。 我在这里更具体的目标是包含我在他们自己的* .cl文件中编写的OpenCL内核。 例: mkdir build cd build cmake .. make 现在我的目录应该有一个可执行文件(标准CMake)和some_opencl_kernel.cl ,我在我的可执行文件中打开它。

OS X下的CMake和GCC损坏

在我的OS X平台上运行cmake-gui configure ,出现以下错误: The C compiler identification is GNU The CXX compiler identification is GNU Checking whether C compiler has -isysroot Checking whether C compiler has -isysroot – yes Checking whether C compiler supports OSX deployment target flag Checking whether C compiler supports OSX deployment target flag – yes Check for working C compiler: […]

Python将32位指针地址传递给C函数

我想在Python脚本的共享库中调用我的C函数。 传递指针时出现问题,64位地址似乎被截断为被调用函数内的32位地址。 Python和我的库都是64位。 下面的示例代码演示了该问题。 Python脚本打印传递给C函数的数据的地址。 然后,从被调用的C函数内打印接收的地址。 此外,C函数通过打印本地创建内存的大小和地址来certificate它是64位。 如果以任何其他方式使用指针,则结果是段错误。 的CMakeLists.txt cmake_minimum_required (VERSION 2.6) add_library(plate MODULE plate.c) plate.c #include #include void plate(float *in, float *out, int cnt) { void *ptr = malloc(1024); fprintf(stderr, “passed address: %p\n”, in); fprintf(stderr, “local pointer size: %lu\n local pointer address: %p\n”, sizeof(void *), ptr); free(ptr); } test_plate.py import numpy import scipy import […]

如何在CLion中创建,编译和运行单个文件

我正在研究一些c ++的东西,我讨厌创建一个全新的项目只是为了在文件上运行一些东西。 我也不喜欢你在创建项目时如何将文件称为main.cpp 。 我只想制作一个包含一些函数或类的文件。 创建整个项目并不重要。 我想创建一个文件并将其称为我想要的。 只需创建一个我调用的文件,然后编译并运行。 我不想处理整个CMake事情,只需编译一个文件。 没有项目相关。 谢谢。 我知道你可以在visual studio上做到这一点,但我正在使用Clion在mac OS X上工作。

如何禁用gcc警告“cc1:warning:命令行选项’-std = c ++ 11’对C ++ / ObjC ++有效,但对C无效”

我是cmake和gcc的新手。 我在公司的新角色中的第一个任务是清除我的linux编译中的大部分错误,现在我看到的唯一警告是 cc1: warning: command line option ‘-std=c++11’ is valid for C++/ObjC++ but not for C [enabled by default] 我希望枯萎抑制警告或解决cmake文件中的问题。 不幸的是,我仍然没有找到适合这里的正确-Wno-xxx语句。 谢谢!

使用CMake打开链接器标志

当使用CMake生成VS2010目标时,我希望/ LTCG标志打开(如果可能的话,仅用于发布+ releasewithdebinfo,但是如果它打开调试则可以)。 如何修改链接器标志? add_definitions()不起作用,因为它只修改编译器标志。 是的,我把它包裹在if(MSVC)中。 如何修改链接器标志?

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

我有一个非常类似于cmake邮件列表中描述的问题,我们有一个依赖于许多静态库的项目(都是从各个子模块中的源代码构建的,每个子库都有自己的CMakeLists.txt描述每个库的构建过程)我想组合成一个静态库,以便向消费者发布。 我的库的依赖性可能会发生变化,我不想让开发人员在这些变化的后面进一步负担。 简洁的解决方案是将所有lib捆绑到一个单独的lib中。 有趣的是,在将目标设置为mylib并使用它时, target_link_libraries命令并未组合所有静态。 。 target_link_libraries(mylib abcd) 但是,奇怪的是,如果我将mylib项目作为可执行项目的子模块,并且仅在顶级可执行文件CMAkeLists.txt中链接mylib ,那么该库似乎确实是组合在一起的。 即,当我将目标设置为仅构建mylib时,mylib为27 MB,而不是3 MB。 有一些解决方案描述了将lib解压缩到目标文件并重新组合( 这里和这里 ),但是当CMake看起来完全能够自动合并lib时,这似乎非常笨拙,如上例所述。 它有一个我失踪的神奇命令,或推荐的优雅方式制作发布库?