zoukankan      html  css  js  c++  java
  • Lazarus开发环境编译选项配置

    Lazarus的环境配置让人有点犯晕,对于刚从delphi转到lazarus上的我来说,每次新建工程都会遇到一堆Can't find unit xxxx used by xxxx的问题,问题虽然不大,但确实让人郁闷,明明路径都设置了,怎么就找不到单元呢?
    首先介绍一下Lazarus的搜索编译单元方面和delphi的区别


    1.Lazarus只是Free Pascal(FPC)的外壳,实际上所有编译的工作都是由FPC完成的,本文讲述的配置方法其实是针对FPC的。
    2.Lazarus虽然提供了大量的单元,但绝大部分都没加入搜索路径,需要自己手工加入到搜索路径里,这点和delphi不一样。Lazarus默认的搜索文件路径是在一个配置文件里
    <lazarus_home>fpc2.2.2in<$FPCTARGET>fpc.cfg
    在fpc.cfg文件里声明了Lazarus默认的搜索路径,可以看到,默认搜索路径很少,这就是为什么总是出现找不到单元的原因了。
    3..inc文件的检索方式也和delphi中不一样,并不是把.inc文件放到单元文件的搜索路径里,lazarus就能找到.inc文件了。
    4.Lazarus IDE可以找到的单元,编译器未必能找到,这点和delphi区别很大,delphi中ide和编译器使用的搜索路径是相同的。


    ok,明白了这点,就可以开始配置的详细介绍了
    打开工程编译选项->路径
    分别介绍如下:


    补充单元文件(-Fu)
    这个是针对单元文件的搜索路径,如果你写了一些单元,或者用到了LCL的单元,一定要把路径加入到这里,否则Lazarus会提示找不到xxx单元,详情参考《Lazarus上Can't find unit 问题的解决办法
    包含文件(-Fi)
    这个是指名.inc文件的路径,如果Lazarus提示xxx.inc没找到,一定要把.inc文件路径加入到这里。
    其余源代码文件(.pp/.pas文件)
    貌似没什么用,一般也不需要设置,而且如果你把FPC和Lazarus源码路径加到这里,编译时会在搜索路径下也会产生一个.ppu文件,这样会莫名其妙的出现找不到单元文件的错误。所以最好的办法就是对它不做任何设置。
    Libraries(-Fl)
    这个路径是用来放一些当前工程中用到的动态库文件路径的,一般的习惯是把动态库放到执行文件输出目录下,所以一般情况下不用管它。
    单元输出目录(-FU)
    编译单元(.ppu)输出路径
    添加调试器路径(无)
    一般情况下不需要设置。


    再举个例子来说明刚才的配置,假设有一个工程,工程目录结构如下:


    ~/source/lazarus/projects/demo1/ {工程目录}
    ~/source/lazarus/projects/demo1/src/ {源码目录}
    ~/source/lazarus/projects/demo1/bin/ {执行文件输出目录}
    ~/source/lazarus/projects/demo1/ppu/ {编译单元输出目录}
    ~/source/lazarus/projects/demo1/lib/demo-lib.so {用到的动态库}


    那么配置如下


    补充单元文件(-Fu):~/source/lazarus/projects/demo1/src/;${LazarusDir}/lcl/
    包含文件(-Fi):${LazarusDir}/lcl/include/
    其余源代码文件(.pp/.pas):
    Libraries(-Fl):~/source/lazarus/projects/demo1/lib;
    单元输出目录(-FU):ppu
    添加调试器路径(无):


    配置好之后,你可以把配置信息保存成一个文件,之后通过编译工程选项->路径里面的"装载/保存"按钮来加载,这样其余项目也可以用到这些配置路径了,这点对于多个工程的开发会比较方便。

    原文:http://jim19770812.blogspot.com/2009/02/lazarus_09.html

    非常感谢 jim19770812.im@gmail.com ,否则 inc 文件在lazarus 里面怎么搜索一直就没有搞清楚啊。

  • 相关阅读:
    saltstack远程执行
    centos7防火墙的关闭和禁用
    saltstack 安装使用
    flask基础-第一个flask-jinja2-response三剑客-request-session
    linux服务器排查病毒纪实
    读完这篇文章,就基本搞定了Redis主从复制
    Django学习【第26篇】:中介模型以及优化查询以及CBV模式
    Django学习【第26篇】:后端CORS解决跨域问题
    Django学习【第25篇】:前端Jsonp解决跨域问题
    Django学习【第24篇】:JS实现的ajax和同源策略
  • 原文地址:https://www.cnblogs.com/hieroly/p/3372812.html
Copyright © 2011-2022 走看看