Mapnik生产debug版本

6 篇文章 0 订阅

背景

Mapnik作为一个地图符号化开源库,在GIS行业得到广泛使用。在引用到自己的工程时,可能需要对其进行修改、编译、调试,最终生成拥有自己特色的地图符号化工具,但是按照官方的安装步骤,最后得到的是release版本,不能对其修改。本人最近再做地图符号化,对mapnik进行了研究,终于可以对其进行debug,以下是解决方法。

解决方法

从github上下载好mapnik后,在mapnik目录下有一个SConstruct文件,打开并定位到302行,显示如下图
在这里插入图片描述
将BoolVariable(‘DEBUG’, ‘Compile a debug version of Mapnik’, ‘False’),中的False修改为True,之后执行Make即可编译生成debug版本。
此时使用gdb运行mapnik-render即可进入调试模式。

使用VSCode进行调试mapnik-render

使用gdb调试,需要掌握许多gdb命令,没有IDE调试方便,因此决定使用vscode进行调试。以下是进行vscode配置mapnik相关步骤
1,下载cmake相关插件:make、cmaketool
2,编写CMakelists.txt文件(和mapnik-render.cpp同一目录)

cmake_minimum_required(VERSION 2.8.12)

project(MapRender)

#设置编译模式
#=================================================================
SET(CMAKE_BUILD_TYPE DEBUG)
#SET(CMAKE_BUILD_TYPE RELEASE)
#=================================================================
#设置编译配置
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror")                        #警告变错误
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -w -fpermissive")                #忽视警告
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O0 -pthread -fPIC -std=c++11")

find_package(Boost 1.58.0 REQUIRED system)
#指定包含头文件
include_directories(
        "./"
        /home/weibaox/xwb/mapnik-v3.0.23/include
        /home/weibaox/xwb/mapnik-v3.0.23/include/mapnik/util
        /home/weibaox/xwb/mapnik-v3.0.23/deps/mapbox/variant/include
        )

FILE(GLOB_RECURSE PROJECT_SOURCES
"./mapnik-render.cpp")
link_directories(../../src)

ADD_EXECUTABLE(${PROJECT_NAME} ${PROJECT_SOURCES})

target_link_libraries(${PROJECT_NAME} 
mapnik
libmapnik.so.3
icuuc
${Boost_LIBRARIES}
boost_program_options
)

注意:运行时如果提示找不到libmapnik.so.3.0,可以把src下生成的libmapnik.so.3.0复制到系统库目录下。
3,配置lanch.json
因为mapnik-render需要启动参数(xml文件、输出图片名),因此需在lanch.json中配置。 其中的“args”节点后面跟的就是启动参数:

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) 启动",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/build/MapRender",
            "args": ["${workspaceFolder}/xml/test.xml","test.png"],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

总结

以上方法是本人通过实践总结的经验,现提供出来供大家参考。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值