首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用cmake强制proj4构建proj.dll而不是proj_4_9.dll (包括版本

CMake是一个跨平台的开源构建工具,用于管理软件构建过程。它可以帮助开发人员自动化构建、测试和部署软件项目。而proj4是一个用于地理空间数据投影转换的库,它提供了一系列函数和工具,用于处理地理坐标系之间的转换。

要使用CMake强制构建proj.dll而不是proj_4_9.dll,可以按照以下步骤进行操作:

  1. 确认你已经安装了CMake和proj4库,并且配置了相关的环境变量。
  2. 创建一个CMakeLists.txt文件,用于描述项目的构建过程。在该文件中,你需要指定proj4库的路径,并设置构建选项。
代码语言:txt
复制

cmake_minimum_required(VERSION 3.0)

project(your_project_name)

设置proj4库的路径

set(PROJ4_LIBRARY_DIR /path/to/proj4/library)

强制使用proj.dll而不是proj_4_9.dll

set(PROJ4_LIBRARY ${PROJ4_LIBRARY_DIR}/proj.dll)

添加你的源代码文件

add_executable(your_executable main.cpp)

链接proj4库

target_link_libraries(your_executable ${PROJ4_LIBRARY})

代码语言:txt
复制

在上述代码中,你需要将/path/to/proj4/library替换为你实际安装proj4库的路径。

  1. 打开命令行终端,进入你的项目目录,并执行以下命令来生成构建文件:
代码语言:txt
复制

cmake .

代码语言:txt
复制

这将根据CMakeLists.txt文件生成相应的构建文件。

  1. 执行以下命令来进行构建:
代码语言:txt
复制

cmake --build .

代码语言:txt
复制

这将根据生成的构建文件进行编译和链接操作。

  1. 完成构建后,你将得到一个可执行文件,其中使用了proj.dll而不是proj_4_9.dll。

请注意,上述步骤仅适用于proj4库的构建过程,具体的路径和文件名可能会因实际情况而有所不同。此外,如果你使用的是其他云计算平台,可以参考相应平台的文档和工具来进行类似的操作。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Windows下OSGEarth的编译过程

编译过程:Win64下编译集成GEOS和Proj4的GDAL。 3) CURL 网络文件传输库,跟在线地图服务相关。同时它也是OpenSceneGraph的第三方依赖库,直接拿过来用就可以了。...osgEarth使用GEOS执行像缓冲和交叉这样的几何操作。虽然它是可选的依赖库,为了使用完整的矢量要素功能,建议加上这个类库。编译过程:VS2015编译GEOS的debug和release版本。...SQLite应该是使用某些数据库文件的时候才用到,适用范围应该较小。现在的版本应该也不用依赖QT组件,反正我是没有看到编译参数的,需要在QT中使用osgEarth的话,可以使用osgQT。 2....编译 1) 设置参数 打开CMake,在“Where is the source code”填写源代码目录,在“Where to build the binaries”填写工程构建目录,然后点击“Configure...如下图所示,提示“configuring done”(提示的警告和缺失组件不是必须)。 ? 然后点击“Generate”,生成VS项目工程,点击“Open Project”打开项目工程。

2.3K20

面向 C++ 的现代 CMake 教程(四)

幸运的是,我们可以使用自动工具来检查和强制执行规则、修复错误并现代化代码为我们。是时候发现程序分析工具了。我们的代码将在每次构建时进行检查,以确保其符合行业标准。...我们还将讨论如何编写基本和高级的配置文件,以及与包关联的版本文件。 然后,为了使事情模块化,我们将简要介绍组件的概念,包括 CMake 包和install()命令。...名称,不是一个导出的目标列表。...使用 CPack 进行打包 从源代码构建项目有其优点,但它可能需要很长时间并引入很多复杂性。这并不是终端用户所期望的最佳体验,尤其是如果他们自己不是开发者的话。...--config : 这是你应该使用的配置文件,不是默认的CPackConfig.cmake。 --verbose, -V: 提供详细输出。

59500
  • CC++ 构建系统,我用 xmake

    XMake 的特性和优势 经常有人问我 XMake 有什么特别之处,相比现有 CMake、Meson 此类构建工具有什么优势,我为什么要使用 XMake 不是 CMake?...XMake 都可以帮他们提升开发效率,让其更加关注 C/C++ 项目本身,不是花更多的时间在构建工具和开发环境上。 下面,我来具体介绍 XMake 的这些主要特性。...,XMake 会优先查找使用系统上用户已经安装的库,当然我们也可以强制禁止查找使用系统库,仅仅从自建包仓库中下载安装包。...用户可与快速切换使用其他的仓库包,不需要花太多时间去研究如何集成它们。...如果你想开发维护跨平台 C/C++ 项目,也可以考虑使用 XMake 来维护构建,提高开发效率,让你更加专注于项目本身,不再为折腾移植依赖库烦恼。

    2.3K20

    面向 C++ 的现代 CMake 教程(一)

    它教会您如何CMake 项目中使用 CMake,并展示使其可维护、优雅和干净的原因。它引导您通过许多项目中出现的复杂任务的自动化,包括构建、测试和打包。...构建器知道项目依赖的结构,因此它们可以同时处理满足其依赖的步骤,以节省用户的时间。 如果您在强大的机器上构建(或者为了调试强制进行单线程构建),您可能想要覆盖那个设置。...构建CMake 使用此目录来存储构建过程中生成的所有内容:项目的工件、短暂配置、缓存、构建日志以及您的本地构建工具将创建的任何内容。这个目录的别名还包括构建根和二进制树。...如果你可以,避免添加以下类型的注释: 强制:这些是为了完整性添加的,但它们并不是非常重要。 冗余:这些重复了代码中已经清晰写明的内容。...最后一个问题依然存在——为什么要在宏上不是推荐函数上使用?在这种情况下,无限制访问全局变量是好的,由于我们没有向main()传递任何参数,所以我们不需要担心常见的警告。

    1.2K01

    宇宙第一 IDE 叕发布新版了

    这允许你在你的 CMake 项目中构建一个目标子集。 精简了 CMake 项目中的项目菜单,并提供了"删除缓存和重新配置"以及"查看缓存"的选项。...这是朝着支持用 CMake 构建基于模块的项目迈出的一步,我们正在努力在以后的版本中完成这一支持。 现在你可以用 LLDB 从 Visual Studio 调试运行在远程系统上的进程。...提交细节的改进,包括一个更灵敏和用户友好的用户界面 帮助菜单 在 17.0 版本中,我们重新设计了帮助菜单,包括入门材料和有用的提示/技巧。...Razor 文件中的片段支持,将通过一个标签完成片段会话,不是按标签-标签。 当有嵌套的 HTML 和 Razor 组件时,在@code 块中有更好的格式化。...Azurite 将被用于 Azure Storage 的本地仿真,不是旧的、不再积极开发的 Azure Storage 仿真器。

    4.2K20

    宇宙第一 IDE 叕发布新版了

    这允许你在你的 CMake 项目中构建一个目标子集。 精简了 CMake 项目中的项目菜单,并提供了"删除缓存和重新配置"以及"查看缓存"的选项。...这是朝着支持用 CMake 构建基于模块的项目迈出的一步,我们正在努力在以后的版本中完成这一支持。 现在你可以用 LLDB 从 Visual Studio 调试运行在远程系统上的进程。...提交细节的改进,包括一个更灵敏和用户友好的用户界面 帮助菜单 在 17.0 版本中,我们重新设计了帮助菜单,包括入门材料和有用的提示/技巧。...Razor 文件中的片段支持,将通过一个标签完成片段会话,不是按标签-标签。 当有嵌套的 HTML 和 Razor 组件时,在@code 块中有更好的格式化。...Azurite 将被用于 Azure Storage 的本地仿真,不是旧的、不再积极开发的 Azure Storage 仿真器。

    4.1K10

    CMake 秘籍(二)

    在这一点上,我们应该指出,我们可以使用add_definitions(-DIS_LINUX)(当然,根据所讨论的平台调整定义)不是使用target_compile_definitions来设置定义。...对于某些类型的操作,这一点尤其明显,线性代数是其中最突出的。本食谱将展示如何启用向量化以加速使用 Eigen C++库进行线性代数的简单可执行文件。...如何操作 我们将逐步构建CMakeLists.txt文件: 我们首先定义最小 CMake 版本和项目名称。...本教程将向您展示如何使用 CMake 3.9 或更高版本时,为简单的 C++和 Fortran 程序检测并链接 OpenMP 使用导入的目标。...我们将逐步构建相应的CMakeLists.txt: 我们首先声明了最低 CMake 版本、项目名称、语言,并强制使用 C++11 标准: cmake_minimum_required(VERSION 3.5

    58720

    小白入门笔记:CMake编译过程详解

    “被使用和修改”,而且CMake作用域之间变量如何影响的“特定规则”也会经常在CMake变量的使用过程中体现。...,foreach中还可以优化成一个更简化的指令行并获取相同的结果: foreach(VAR 1 2 3 e f) 除此以外,从3.17 版本开始,foreach() 已经学会了如何压缩列表(ZIP_LISTS...CMake中的定义指令macro()和function()的实现与C风格的宏定义和C++的函数定义比较: • macro() 的工作方式像是查找和替换指令,不是像function() 这样的实际子例程调用...从3.17版本后为每个函数设置的官方变量,同时CMake官方也定义了一些引用来访问命令调用中传递的参数, ${ARGC}输出参数的数量、${ARGV}输出所有参数的列表、${ARG0}, ${ARG1...本小节将考虑构建类型的选择,并展示如何控制编译器标志: 3.6、构建类型切换 CMake可以配置构建类型,例如:Debug、Release等。

    6.1K31

    xmake v2.3.1 发布, 无缝对接其他构建系统

    不得不承认,目前就构建速度来讲,ninja确实比xmake快不少,后续版本我会尝试优化下xmake的构建速度。...尝试使用其他构建系统构建 xmake v2.3.1以上版本直接对接了其他第三方构建系统,即使其他项目中没有使用xmake.lua来维护,xmake也可以直接调用其他构建工具来完成编译。.../cmake/makefile等构建系统维护,xmake默认优先探测使用了autotools,如果想要强制切换其他构建系统,可以执行: $ xmake f --trybuild=[autotools|cmake...即使跑通了一个工具链的交叉编译,如果切到另外一个工具链环境,可能又要折腾好久,如果使用xmake,通常只需要两条简单的命令即可: !...是不是很简单?如果你觉得这没啥,那么可以对比下直接操作.

    88630

    【gtest】 C++ 的测试框架之使用 gtest 编写单元测试

    3.14) project(my_project) # 设置 C++ 标准为 C++14 set(CMAKE_CXX_STANDARD 14) # 强制要求编译器支持所选的 C++ 标准 set(CMAKE_CXX_STANDARD_REQUIRED...: cmake_minimum_required(VERSION 3.14):指定了 CMake 的最低版本要求。...最后两行启用了 CMake 的测试运行器,使用 GoogleTest 的 CMake 模块来发现包含在二进制文件中的测试。 现在你可以依据下面指令构建和运行你的测试: 1. cmake -S ....接下来,我们将解释如何编写一个测试程序,从单个断言级别开始,逐步构建到测试和测试套件。 1.1 断言(assertions) 断言(assertions)是类似函数调用的宏。...,使用 TEST_F() 不是 TEST(),因为它允许你访问测试夹具中的对象和子程序: TEST_F(TestFixtureClassName, TestName) { ... test body

    2K10

    Xmake 和 CC++ 包管理

    项目源码 官方文档 入门课程 构建系统与包管理 C++ 的生态比较繁杂,这其中也有一定历史原因,不管如何,官方没有提供原生的包管理支持,对我们开发者来说,使用第三方 C++ 依赖库多少存在很多不便。...CMake 维护构建的,另外,我们需要对每个依赖项,配置 url, 版本等各种包信息。...我们也能指定特定分支版本: add_requires("tbox master") add_requires("tbox dev") Xmake 的语义版本支持,在几年前就已经很好的支持, vcpkg...(如果没设置版本要求),如果用户完全不想使用系统库以及第三方包管理提供的库,那么可以设置: add_requires("tbox", {system = false}) 如果配置成: add_requires...CMake 维护的静态库,根目录下使用了 Xmake 来维护,我们可以在 xmake.lua 中通过定义 package("foo") 包来描述如何构建 foo 代码库。

    3K10

    CMake 秘籍(四)

    还有更多 为了确保预处理器变量仅在 CMake 变量被视为真常量时定义,可以在即将配置的头文件中使用#cmakedefine不是#define,通过使用configure_file。...本食谱的目标与前一个相似,但起点不同;我们的计划是从文件中读取版本信息,不是在CMakeLists.txt内部设置它。...将版本信息保存在 CMake 源代码之外的单独文件中的动机是允许其他构建框架或开发工具使用该信息,独立于 CMake不在几个文件中重复信息。...这个命令给我们提供了当前提交哈希的简短版本。当然,我们完全有灵活性来运行另一个 Git 命令,不是这个。...我们选择使用不是函数,因为我们还希望在调用范围内使用宏内部定义的变量来改变消息的颜色。

    24920

    面向 C++ 的现代 CMake 教程(二)

    策略可以影响 CMake 的每一个方面,包括其他重要命令如project()。因此,很重要的一点是,你要在CMakeLists.txt文件开始时设定你正在使用版本。否则,你会收到警告和错误。...这个文件将设置所需的最小 CMake 版本和相应的策略,设置项目名称,支持的语言,全局变量,并包括来自cmake目录的文件,以便它们的内容在全局范围内可用。...下一部分将使你能够解决在使用 CMake 构建项目时遇到的大多数情况。 我们故意关注现代、优雅的实践,避免引入太多的遗留问题。具体来说,我们将处理逻辑构建目标,不是操纵单个文件。...或其他任何头文件——CMake使用特定的命令行选项强制包含它们。...调试单个阶段 我们可以向编译器传递-save-temps标志(GCC 和 Clang 都有这个标志),它将强制将每个阶段的输出存储在文件中,不是内存中: chapter05/07-debug/CMakeLists.txt

    56800

    CMake---优雅的构建CC++软件项目实践(1)

    首先说明的是本篇文章不从cmake的整个语法上去讲述,而是从一个实际项目的构建上入手,去了解如何优雅的去构建一个软件项目,搭建一个C/C++软件项目基本的依赖组件,最后形成一个构建C/C++软件项目的模板...涉及到的有: cmake的变量作用域? cmake中的数据结构? 宏函数与函数? 如何构建动静态库和找到这些库? 如何去实现支持多平台的项目构建如何构建一个应用?...如何实现项目的最后install? 如何很友好的去展示构建过程的各种级别信息? 如何适配cmake-gui,采用友好的ccmake或者cmake-gui实现构建?...除此之外,C/C++ 程序员长期以来手动管理依赖,即手动查找、安装依赖,再配置构建工具(如 cmake使用依赖。...软件版本可以方便用户或者自己清楚的知道每个版本都有哪些内容的更新,可以对版本做出使用的选择或者解决版本中遇到的bug。

    8.4K52

    万字总结编译利器CMake,从入门到项目实战演练

    可执行文件可以使用此库,不是使用编译器提供的标准平方根函数。 在本教程中,我们将库放入名为MathFunctions的子目录中。...例如,要在“调试”模式下运行测试,请从构建目录(不是“调试”子目录!)中使用ctest -C Debug -VV。或者,从IDE构建RUN_TESTS目标。...我们使用option命令,因为它允许用户可以选择该值是On还是Off。 接下来,我们将重构MathFunctions使其成为使用mysqrt或sqrt封装的真实库,不是要求调用代码执行此逻辑。...让我们从构造一个INTERFACE目标并指定所需的C++标准级别11开始,不是使用CMAKE_CXX_STANDARD。...将其他平台的项目迁移到 CMake: CMake 可以很轻松地构建出在适合各个平台执行的工程环境。如果当前的工程环境不是 CMake ,而是基于某个特定的平台,是否可以迁移到 CMake 呢?

    1.2K00

    Xmake v2.7.2 发布,更加智能化构建第三方库

    项目源码 官方文档 入门课程 新特性介绍 更加智能化构建第三方库 在先前的版本中,Xmake 提供了一种 TryBuild 模式,可以在没有 xmake.lua 的情况下,使用 Xmake 尝试对...,不支持部分代码 TryBuild 模式通常处理这些情况,但是在新版本中,我们对 TryBuild 模式引入了一种新的机制,通过复用 xmake-repo 仓库中的构建脚本,来改进构建逻辑。...回退到直接编译 如果我们不想使用 xmake-repo 的构建脚本,我们也能回退到 cmake/autoconf 直接去尝试构建它们。... xmake-repo 里面的构建脚本是最优化的,精简了很多没必要的构建参数,比如禁用 tests/examples 构建等等。...这主要用于解决一些包每次版本更新,可能都会存在一些 abi 不兼容,或者破坏其他依赖它的包,默认 Xmake 是不会去重新编译安装它们的,除非它们的版本和配置也被更新了。

    91220

    面向 C++ 的现代 CMake 教程(三)

    这是一个旨在作为插件在运行时加载的共享库版本不是在编译时与可执行文件链接的东西。共享模块不会随着程序的启动自动加载(像常规共享库那样)。...建议优先使用目标不是变量。...何时选择一个不是另一个?它们究竟是如何工作的,以及它们是如何相互作用的?一些答案比其他的更难找到,令人惊讶的是,CMake 的文档没有为该主题提供一个平滑的介绍。不用担心——我们在这里会处理。...自 v3.20 起,CMake使用上游的GTestConfig.cmake配置文件(如果存在),不是依赖于可能过时的查找模块。...为了测试目的解耦单元,开发人员使用测试替身或类的特殊版本,这些类被测试类使用。一些例子包括伪造品、存根和模拟。以下是这些的一些大致定义: 伪造品是某些更复杂类的有限实现。

    54800

    Android NDK 开发 | CMake 使用手册 - 初见篇

    在终端输入如下命令,可以查看版本号,有输出表示环境正常: ---> cmake --version cmake version 3.16.3 ---- 1....cmake_minimum_required 表示支持的 cmake 最小版本,这里是 3.16。...add_executable(cmake_test main.cpp) 另外, CMakeLists 中的关键字大小写并没有强制的要求,根据个人风格或团队规定统一即可,形式上的东西,不必过于纠结。...只要有 so 文件和 头文件 就可以使用在项目中,这样也有利于某些公司在提供一些算法服务的同时,保证源码实现的私密。 那如何根据源码生成链接库呢?...不是感觉这些都是魔法,就像我第一次接触时,就不由感慨。 ---- 接下来我们将刚才编译的 libfacer.so 在这里集成一下做个小结。

    1.2K20
    领券