在vscode上用cmake链接到lua库花了差不多一天时间,简直要崩溃了,现将俩种方法记录下来希望对小伙伴有帮助
第一种介绍一下用find_package由编译器帮你找到库的位置,这种方法比较适用于你拿到一台陌生的机器,比较方便,他会在环境变量,同级目录中帮你找所需的库和头文件,也可以指定目录。这里就不多介绍,感兴趣的小伙伴可以去官方文档查一下( 官方文档 )。 cmake代码如下
第二种方法就是用自己包含库和头文件,相当于在vs中项目属性中加入相应的库和头文件,代码如下
cmake_minimum_required(VERSION 2.8) project(main) set(CMAKE_CXX_STANDARD 17) #包含头文件 include_directories("../../lua lib/sol3.0.3/sol2/include") include_directories("C:/Program Files (x86)/Lua/5.1/include") include_directories("C:/Program Files (x86)/Lua/5.1/lib") add_executable(main main.cpp) #将库链接进来 target_link_libraries(main ${LUA_LIBRARIES}) 之前用的就是第二种方法,但是一直都不能正确运行,后来发现是因为自己的编译器是64位的导致一直不能成功编译,后来将编译器换成32位的就可以了。最后给小伙伴们分享一篇cmake入门的博客,应该是很有帮助的。(cmake入门) cmake Xcode 这里使用的 texwork 源码,在 texwork 源码目录下创建 xcode 目录,cd 切换到 xcode 目录下,执行 cmake -G "Xcode" .. 我只在window下打开wireshark 看包, 在 linux 做开发, 所以本次编译是在 linux 上, 方便调试追踪代码。 Linux version 5.11.0-46-generic (buildd@lgw01-amd64-010) (gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0, GNU ld (GNU Binutils for Ubuntu) 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录一、Nominatim是什么?二、软硬件需求1、硬件2、软件版本三、安装1、更新软件包2、安装postgresql3、安装postgis4、安装php4、安装其他支撑库5、查看版本四、系统设置和配置1、PostgreSQL数据库设置2、设置Apache Webserver3、添加SELinux安全设置总结 一、Nominatim是什么? Nominatim是一个可以按名称和地址来搜索OSM中的数据,并生成OSM点的合成地址的工具. 1.cannot find -llua以及 lua.h no such file 最好直接apt-get install lua,从官网下载后,make linux & make install cp lauxlib.h、lua.h、luaconf.h、lualib.h lua.hpp /usr/local/include cp liblua.a /usr/local/lib 1.准备工作 :tw-26a0: Never, ever run the installation as a root user. 通过root用户将一个普通用户joe加入sudoer,解决 xxx is not in the sudoers file。命令: visudo 加入红框中的内容 Note: these installation instru... ceph 16.25工程管理脚本用了dnf和dnf-utlis,centos7(软件库比较老,且p版本已经不支持centos7)安装部署比较麻烦,所以最好用centos8做编译环境。 1. 从github下载ceph项目及其子项目源码 git clone https://github.com/ceph/ceph.git git submodule u... – Could NOT find LIBUV (missing: LIBUV_LIBRARY LIBUV_INCLUDE_DIR) – Could NOT find JSON-C (missing: JSON-C_LIBRARY JSON-C_INCLUDE_DIR) 在本文中,我们将使用CMake工具来构建Lua,并实现跨平台的编译。首先,我们需要准备Lua的源代码。至此,我们已经成功地使用CMake工具构建了Lua,并实现了跨平台的编译。你现在可以在不同的操作系统上使用相同的构建过程来编译Lua,并在各自的平台上运行Lua程序。如果你的源文件分散在不同的目录下,你需要适当地修改这部分的配置。上述命令将根据生成的构建文件,编译Lua源代码,并生成可执行文件。在Lua源码目录下创建一个名为CMakeLists.txt的文本文件,该文件用于描述构建过程和相关配置。 有时候从github上下载一些新的包编译时经常会缺少一些插件或库文件,比如 Could NOT find Bullet (missing: BULLET_DYNAMICS_LIBRARY BULLET_COLLISION_LIBRARY BULLET_MATH_LIBRARY BULLET_SOFTBODY_LIBRARY BULLET_INCLUDE_DIR) Could NOT find SDL (missing: SDL_LIBRARY SDL_INCLUDE_DIR) 解决办法如下
cmake_minimum_required(VERSION 2.8) project(main) set(CMAKE_CXX_STANDARD 17) #包含头文件 include_directories("../../lua lib/sol3.0.3/sol2/include") include_directories("C:/Program Files (x86)/Lua/5.1/include") include_directories("C:/Program Files (x86)/Lua/5.1/lib") add_executable(main main.cpp) #将库链接进来 target_link_libraries(main ${LUA_LIBRARIES})
之前用的就是第二种方法,但是一直都不能正确运行,后来发现是因为自己的编译器是64位的导致一直不能成功编译,后来将编译器换成32位的就可以了。最后给小伙伴们分享一篇cmake入门的博客,应该是很有帮助的。(cmake入门) cmake Xcode 这里使用的 texwork 源码,在 texwork 源码目录下创建 xcode 目录,cd 切换到 xcode 目录下,执行 cmake -G "Xcode" .. 我只在window下打开wireshark 看包, 在 linux 做开发, 所以本次编译是在 linux 上, 方便调试追踪代码。 Linux version 5.11.0-46-generic (buildd@lgw01-amd64-010) (gcc (Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0, GNU ld (GNU Binutils for Ubuntu) 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录一、Nominatim是什么?二、软硬件需求1、硬件2、软件版本三、安装1、更新软件包2、安装postgresql3、安装postgis4、安装php4、安装其他支撑库5、查看版本四、系统设置和配置1、PostgreSQL数据库设置2、设置Apache Webserver3、添加SELinux安全设置总结 一、Nominatim是什么? Nominatim是一个可以按名称和地址来搜索OSM中的数据,并生成OSM点的合成地址的工具. 1.cannot find -llua以及 lua.h no such file 最好直接apt-get install lua,从官网下载后,make linux & make install cp lauxlib.h、lua.h、luaconf.h、lualib.h lua.hpp /usr/local/include cp liblua.a /usr/local/lib 1.准备工作 :tw-26a0: Never, ever run the installation as a root user. 通过root用户将一个普通用户joe加入sudoer,解决 xxx is not in the sudoers file。命令: visudo 加入红框中的内容 Note: these installation instru... ceph 16.25工程管理脚本用了dnf和dnf-utlis,centos7(软件库比较老,且p版本已经不支持centos7)安装部署比较麻烦,所以最好用centos8做编译环境。 1. 从github下载ceph项目及其子项目源码 git clone https://github.com/ceph/ceph.git git submodule u... – Could NOT find LIBUV (missing: LIBUV_LIBRARY LIBUV_INCLUDE_DIR) – Could NOT find JSON-C (missing: JSON-C_LIBRARY JSON-C_INCLUDE_DIR) 在本文中,我们将使用CMake工具来构建Lua,并实现跨平台的编译。首先,我们需要准备Lua的源代码。至此,我们已经成功地使用CMake工具构建了Lua,并实现了跨平台的编译。你现在可以在不同的操作系统上使用相同的构建过程来编译Lua,并在各自的平台上运行Lua程序。如果你的源文件分散在不同的目录下,你需要适当地修改这部分的配置。上述命令将根据生成的构建文件,编译Lua源代码,并生成可执行文件。在Lua源码目录下创建一个名为CMakeLists.txt的文本文件,该文件用于描述构建过程和相关配置。 有时候从github上下载一些新的包编译时经常会缺少一些插件或库文件,比如 Could NOT find Bullet (missing: BULLET_DYNAMICS_LIBRARY BULLET_COLLISION_LIBRARY BULLET_MATH_LIBRARY BULLET_SOFTBODY_LIBRARY BULLET_INCLUDE_DIR) Could NOT find SDL (missing: SDL_LIBRARY SDL_INCLUDE_DIR) 解决办法如下
之前用的就是第二种方法,但是一直都不能正确运行,后来发现是因为自己的编译器是64位的导致一直不能成功编译,后来将编译器换成32位的就可以了。最后给小伙伴们分享一篇cmake入门的博客,应该是很有帮助的。(cmake入门)