Tag: cmake

将C模块与Python 3.7链接。 在Windows中使用CMake

我正在尝试创建一个可以从Python调用的C库,到目前为止我已经创建了暴露模块信息和方法表的代理C文件(为简单起见,只添加了一个方法get_cycle_count ,其实现无关紧要): static PyMethodDef NESulator_methods[] = { {“NESulator”, get_cycle_count, METH_VARARGS, “Retrieves the current cycle count”}, {NULL, NULL, 0, NULL} /* Sentinel */ }; static struct PyModuleDef NESulator_module = { PyModuleDef_HEAD_INIT, “NESulator”, /* name of module */ NULL, /* module documentation, may be NULL */ -1, /* size of per-interpreter state of the module, or -1 […]

无法通过cmake在windows上编译libpng 1.6:无法打开包含文件:’zlib.h’:没有这样的文件或目录

VS 2015 Update 1.预构建的zlib被解压缩到project / zlib中。 find_package通过提供适当的变量找到它。 它将dir添加为cl调用中的包含: C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64\CL.exe /c /IC:\project\zlib\include /IC:\project\libpng /nologo /W3 /WX- /O2 /Ob2 /D WIN32 /D _WINDOWS /D NDEBUG /D _CRT_SECURE_NO_DEPRECATE /D “CMAKE_INTDIR=\”Release\”” /D _MBCS /Gm- /MD /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /Fo”png16_static.dir\Release\\” /Fd”png16_static.dir\Release\png16_static.pdb” /Gd /TC /errorReport:queue C:\project\libpng\png.c C:\project\libpng\pngerror.c C:\project\libpng\pngget.c C:\project\libpng\pngmem.c C:\project\libpng\pngpread.c C:\project\libpng\pngread.c C:\project\libpng\pngrio.c C:\project\libpng\pngrtran.c C:\project\libpng\pngrutil.c […]

CMake的默认构建目标的名称是什么?

我有一个自定义目标,我希望它依赖于默认目标(使用make构建的目标)。 add_custom_target(foo ….) add_dependency(foo default_target_name_goes_here) 默认目标的名称是什么? 我试过ALL , ALL_BUILD , MyProjectsName , DEFAULT ,…… 在CMake文档中查找任何内容总是不成功的冒险…… 更新:似乎CMake的设计方式非常难以修复/实现: 自2009年以来bugreport获得+ 1 。 谁的确想拥有一个依赖于all目标的自定义目标? 或换句话说:谁曾写过make && make test ?…

获取已安装程序的编译信息

我需要获取用于构建已安装程序的C编译器的信息。 我猜rt或者lib可以报告,但没有具体的。 并不是程序将安装在/usr/…或类似的地方,因此无法访问构建目录以获取相关信息。

#include :没有这样的文件或目录(即使源和头都在同一目录中)

我最近开始将我用Java编写的游戏引擎(使用lwjgl)转换为C / C ++。 我在Fedora 25上使用Qt Creator和CMake(我很确定这不影响任何事情)链接所有目录,文件等。我的系统上安装了GLFW,但我决定使用源版本,而不是比包含的版本。 我很高兴我的扩展加载器,并按照GLFW网站上的教程进行配置。 我没有通过“Hello World”测试,因为当我在我的main.c文件中包含glad.h文件时,我收到一个错误: : No such file or directory 同样奇怪的是我在glad.c文件中得到了同样的错误,该文件是使用glad自己的生成器创建的。 我的main.c文件看起来像这样 #include #include #include int main(int argc, char *argv[]) { printf(“Kick Ass Game Engine”); return 0; } 我也尝试过使用”glad.h:而不是 (我在这里找到了建议)。这对我的main.c文件有效,但是我对glad.c文件仍有同样的问题即使我编辑它以反映main.c 我的项目目录如下所示: – KAGE/ -> CMakeLists.txt -> glad.c -> glad.h -> main.c -> khplatform.h -> KAGE/lib/ -> glad -> glfw-3.2.1 […]

CMake make :***没有规则来制作目标`/path/to/uthash/utarray.h’,需要`HelloTest’。 停止

我正在尝试构建一些混合的C / C ++代码来运行一些简单的测试代码(HelloTest): #include #include “cpp_header.h” extern “C” { #include “c_header.h” } using namespace std; int main(int argc, char **argv) { cout << "Hello, World!" << endl; return 0; } 但我得到了这个非常奇怪的错误: /Applications/CLion.app/Contents/bin/cmake/bin/cmake –build /Users/user/Library/Caches/clion10/cmake/generated/c1d0f54d/c1d0f54d/Debug –target all — -j 2 make[2]: *** No rule to make target `/path/to/uthash/utarray.h’, needed by `HelloTest’. Stop. make[1]: *** [CMakeFiles/HelloTest.dir/all] […]

CMake:/ usr / include不习惯查找fftw3.h

我正在开发一个个人项目来与CMake交叉编译Raspberry Pi。 这是我第一次使用它构建项目。 我编译的文件之一包括fftw3.h头文件。 此文件存在于/usr/include文件夹中,如以下输出所示: $ ls /usr/include/fftw3* /usr/include/fftw3.f /usr/include/fftw3.f03 /usr/include/fftw3.h /usr/include/fftw3l.f03 /usr/include/fftw3q.f03 cmake使用find_path(FFTW_FOLDER NAMES fftw3.h)成功找到该文件,即使cmake默认查看此路径,我也会在使用target_include_directories(${LIB_NAME} PUBLIC /usr/include)构建目标时显式添加该文件。 但是,当编译时,我有经典的错误消息告诉我fftw3.h 。 如果我复制文件并将其放在我的主文件夹中并在包含列表中添加我的主文件夹,则没有问题,编译工作正常。 有什么想法吗 ? 谢谢,Damien 编辑1回答@Pablo和@hikerjobs : 这是我的编译行的样子: /home/littlemonster/projects/rpi-workspace/rpi-tools/arm-bcm2708/gcc- linaro-arm-linux-gnueabihf-raspbian-x64/bin/arm-linux-gnueabihf-g++ -Dmatrix_hal_EXPORTS -I/home/littlemonster/projects/rpi- workspace/lib/matrix-hal/matrix-creator-hal -fPIC -Wall -Werror – Wextra -Wdouble-promotion -std=gnu++11 -o CMakeFiles/matrix- hal.dir/matrix-creator-hal/cpp/driver/cross_correlation.cpp.o -c /home/littlemonster/projects/rpi-workspace/lib/matrix-hal/matrix- creator-hal/cpp/driver/cross_correlation.cpp In file included from /home/littlemonster/projects/rpi- workspace/lib/matrix-hal/matrix-creator- hal/cpp/driver/cross_correlation.cpp:18:0: /home/littlemonster/projects/rpi-workspace/lib/matrix-hal/matrix- creator-hal/cpp/driver/cross_correlation.h:21:19: fatal […]

我如何正确链接libssh?

我正试图在我的代码中包含一个lib(libssh),但没有任何作用……此时我不确定该怎么做,因为搜索引擎中没有结果出现我正在接收的错误。 我在这里下载了libssh: https : //github.com/substack/libssh 我安装了这些: yum install cmake zlib-devel libpng-devel openssl-devel -y; 创建了一个“build”目录作为libssh的父目录,移动到那里,键入: cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Debug .. make [root@ build]# cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Debug LD_DEBUG=all .. — Could NOT find NaCl (missing: NACL_LIBRARIES NACL_INCLUDE_DIRS) — ******************************************** — ********** libssh build options : ********** — zlib support: ON — libgcrypt support: OFF — libnacl support: OFF […]

cflags’-WI,-export-dynamic’与链接器标志’-export-dynamic’

我使用Clang在CMake中编译了具有不同编译标志的相同程序(不是库) 使用CMAKE_C_FLAGS = -Wl,-export-dynamic 使用CMAKE_EXE_LINKER_FLAGS = -export-dynamic 但我注意到第二种方式似乎不起作用。 我找不到导出的符号。 我很惊讶只有第一种方式有效。 我不知道C编译器是否做了一些棘手的事情,或者Clang或者CMake。 但是如何让第二种方式起作用呢? 第一种方式会打印很多警告。

链接共享dll库cmake clion项目

我目前在Clion上有两个C项目和cmake。 其中一个项目名为“sharedLibsDemo”,我正在尝试在此项目中创建一个共享库。 在另一个项目中,我想使用由“共享”项目创建的库。 目前,在“sharedLibsDemo”项目中,我有以下cmake: cmake_minimum_required(VERSION 3.7) project(sharedLibsDemo) set(CMAKE_C_STANDARD 11) INCLUDE_DIRECTORIES(“${CMAKE_CURRENT_BINARY_DIR}”) set(SOURCE_FILES shared.c shared.h main.c) add_library(shared SHARED ${SOURCE_FILES}) include(GenerateExportHeader) GENERATE_EXPORT_HEADER(shared # generates the export header shared_EXPORTS.h automatically BASE_NAME shared EXPORT_MACRO_NAME SHARED_EXPORTS EXPORT_FILE_NAME shared_EXPORTS.h STATIC_DEFINE SHARED_EXPORTS_BUILT_AS_STATIC) set(EXEC_FILES main.c) add_executable(myexe ${EXEC_FILES}) target_link_libraries(myexe shared) 但是,此cmake仅创建shared_EXPORTS .h,libshared.dll和libshared.dll.a`文件。 我设法使用Mingw本身创建.lib文件,并将所有这些文件(包括源代码的.h文件)放入一个文件夹中,并将该文件夹放在第二个项目的根文件夹中以便使用它。 但是,我到处寻找一种方法将库链接到第二个项目的可执行文件。 cmake本身的文档假设我有一些我不知道的知识。 是否有任何命令列表可用于最终链接我的库。 我已经尝试过“使用find_package()或target_link_libraries”的通用答案无济于事。 编辑1 以下是shared.h的内容: #include “shared_EXPORTS.h” #ifndef SHAREDLIBSDEMO_LIBRARY_H #define SHAREDLIBSDEMO_LIBRARY_H […]