lyzh 发表于 2015-6-28 08:43:22

cmake scripts for SylixOS

本帖最后由 lyzh 于 2015-6-28 09:10 编辑

I'm writing cmake scripts for SylixOS, using the the scripts, building third party software will be easier.
Currently the script can compile libsylixos.a it-self, will come sooooooooooooooooooooooooooon.
If anybody is being interesting about this, ...cmake-gui config& generator Unix Makefiles


make target sylixos


building, color, percent.


done:


king 发表于 2015-6-28 16:00:25

:handshake

lyzh 发表于 2015-6-28 16:59:48

本帖最后由 lyzh 于 2015-6-28 17:07 编辑

下面使用这些脚本编译SylixOS自带的example
在example目录下编写CMakeLists.txt文件如:

从这个CMakeLists.txt可以看到,除了内核模块不是标准cmake定义的外,其他函数都是标准的,比如add_executable()。其中最大的意义是在编译第三方使用cmake发布的源码时,可以使用cmake定义的标准方法进行配置和编译,而不需要主动添加SylixOS的头文件或者库。


打开cmake-gui

Configure


选择toolchains-arm-none-eabi.cmake


Generate


已经生成Makefile成功


执行make,成功后:


已经顺利生成app, ko, lib。
下面是make VERBOSE=1的输出,可以看到编译链接所使用的指令。
$ make VERBOSE=1
/usr/bin/cmake -H/home/lyzh/projects/sylixos/workspace/examples -B/tmp/sylixos-example --check-build-system CMakeFiles/Makefile.cmake 0
/usr/bin/cmake -E cmake_progress_start /tmp/sylixos-example/CMakeFiles /tmp/sylixos-example/CMakeFiles/progress.marks
make -f CMakeFiles/Makefile2 all
make: Entering directory '/tmp/sylixos-example'
make -f CMakeFiles/hello_library.dir/build.make CMakeFiles/hello_library.dir/depend
make: Entering directory '/tmp/sylixos-example'
cd /tmp/sylixos-example && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /home/lyzh/projects/sylixos/workspace/examples /home/lyzh/projects/sylixos/workspace/examples /tmp/sylixos-example /tmp/sylixos-example /tmp/sylixos-example/CMakeFiles/hello_library.dir/DependInfo.cmake --color=
make: Leaving directory '/tmp/sylixos-example'
make -f CMakeFiles/hello_library.dir/build.make CMakeFiles/hello_library.dir/build
make: Entering directory '/tmp/sylixos-example'
/usr/bin/cmake -E cmake_progress_report /tmp/sylixos-example/CMakeFiles 1
[ 33%] Building C object CMakeFiles/hello_library.dir/hello_library/hello_library.c.obj
/home/lyzh/gcc-sylixos/bin/arm-none-eabi-gcc-DSYLIXOS=1 -D__SYLIXOS_LITE -Wall -fmessage-length=0 -fsigned-char -fno-short-enums -I/home/lyzh/projects/sylixos/workspace/libsylixos/SylixOS -I/home/lyzh/projects/sylixos/workspace/libsylixos/SylixOS/include -I/home/lyzh/projects/sylixos/workspace/libsylixos/SylixOS/include/inet -I/home/lyzh/projects/sylixos/workspace/libsylixos/SylixOS/include/inet/ipv4 -I/home/lyzh/projects/sylixos/workspace/libsylixos/SylixOS/include/inet/ipv6    -mfloat-abi=softfp -mfpu=vfpv3 -mcpu=arm920t -o CMakeFiles/hello_library.dir/hello_library/hello_library.c.obj   -c /home/lyzh/projects/sylixos/workspace/examples/hello_library/hello_library.c
Linking C static library libhello_library.a
/usr/bin/cmake -P CMakeFiles/hello_library.dir/cmake_clean_target.cmake
/usr/bin/cmake -E cmake_link_script CMakeFiles/hello_library.dir/link.txt --verbose=1
/home/lyzh/gcc-sylixos/bin/arm-none-eabi-ar cq libhello_library.aCMakeFiles/hello_library.dir/hello_library/hello_library.c.obj
/home/lyzh/gcc-sylixos/bin/arm-none-eabi-ranlib libhello_library.a
make: Leaving directory '/tmp/sylixos-example'
/usr/bin/cmake -E cmake_progress_report /tmp/sylixos-example/CMakeFiles1
[ 33%] Built target hello_library
make -f CMakeFiles/hello_module.dir/build.make CMakeFiles/hello_module.dir/depend
make: Entering directory '/tmp/sylixos-example'
cd /tmp/sylixos-example && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /home/lyzh/projects/sylixos/workspace/examples /home/lyzh/projects/sylixos/workspace/examples /tmp/sylixos-example /tmp/sylixos-example /tmp/sylixos-example/CMakeFiles/hello_module.dir/DependInfo.cmake --color=
make: Leaving directory '/tmp/sylixos-example'
make -f CMakeFiles/hello_module.dir/build.make CMakeFiles/hello_module.dir/build
make: Entering directory '/tmp/sylixos-example'
/usr/bin/cmake -E cmake_progress_report /tmp/sylixos-example/CMakeFiles 2
[ 66%] Building C object CMakeFiles/hello_module.dir/hello_module/hello_module.c.obj
/home/lyzh/gcc-sylixos/bin/arm-none-eabi-gcc-DSYLIXOS=1 -D__SYLIXOS_LITE -Wall -fmessage-length=0 -fsigned-char -fno-short-enums -I/home/lyzh/projects/sylixos/workspace/libsylixos/SylixOS -I/home/lyzh/projects/sylixos/workspace/libsylixos/SylixOS/include -I/home/lyzh/projects/sylixos/workspace/libsylixos/SylixOS/include/inet -I/home/lyzh/projects/sylixos/workspace/libsylixos/SylixOS/include/inet/ipv4 -I/home/lyzh/projects/sylixos/workspace/libsylixos/SylixOS/include/inet/ipv6    -fPIC -mfloat-abi=softfp -mfpu=vfpv3 -mcpu=arm920t -o CMakeFiles/hello_module.dir/hello_module/hello_module.c.obj   -c /home/lyzh/projects/sylixos/workspace/examples/hello_module/hello_module.c
Linking C static library hello_module.ko
/usr/bin/cmake -P CMakeFiles/hello_module.dir/cmake_clean_target.cmake
/usr/bin/cmake -E cmake_link_script CMakeFiles/hello_module.dir/link.txt --verbose=1
/home/lyzh/gcc-sylixos/bin/arm-none-eabi-ar cq hello_module.koCMakeFiles/hello_module.dir/hello_module/hello_module.c.obj
/home/lyzh/gcc-sylixos/bin/arm-none-eabi-ranlib hello_module.ko
make: Leaving directory '/tmp/sylixos-example'
/usr/bin/cmake -E cmake_progress_report /tmp/sylixos-example/CMakeFiles2
[ 66%] Built target hello_module
make -f CMakeFiles/hello_world.dir/build.make CMakeFiles/hello_world.dir/depend
make: Entering directory '/tmp/sylixos-example'
cd /tmp/sylixos-example && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /home/lyzh/projects/sylixos/workspace/examples /home/lyzh/projects/sylixos/workspace/examples /tmp/sylixos-example /tmp/sylixos-example /tmp/sylixos-example/CMakeFiles/hello_world.dir/DependInfo.cmake --color=
make: Leaving directory '/tmp/sylixos-example'
make -f CMakeFiles/hello_world.dir/build.make CMakeFiles/hello_world.dir/build
make: Entering directory '/tmp/sylixos-example'
/usr/bin/cmake -E cmake_progress_report /tmp/sylixos-example/CMakeFiles 3
Building C object CMakeFiles/hello_world.dir/hello_world/hello_world.c.obj
/home/lyzh/gcc-sylixos/bin/arm-none-eabi-gcc-DSYLIXOS=1 -D__SYLIXOS_LITE -Wall -fmessage-length=0 -fsigned-char -fno-short-enums -I/home/lyzh/projects/sylixos/workspace/libsylixos/SylixOS -I/home/lyzh/projects/sylixos/workspace/libsylixos/SylixOS/include -I/home/lyzh/projects/sylixos/workspace/libsylixos/SylixOS/include/inet -I/home/lyzh/projects/sylixos/workspace/libsylixos/SylixOS/include/inet/ipv4 -I/home/lyzh/projects/sylixos/workspace/libsylixos/SylixOS/include/inet/ipv6    -mfloat-abi=softfp -mfpu=vfpv3 -mcpu=arm920t -o CMakeFiles/hello_world.dir/hello_world/hello_world.c.obj   -c /home/lyzh/projects/sylixos/workspace/examples/hello_world/hello_world.c
Linking C executable hello_world
/usr/bin/cmake -E cmake_link_script CMakeFiles/hello_world.dir/link.txt --verbose=1
/home/lyzh/gcc-sylixos/bin/arm-none-eabi-gcc    -Wall -fmessage-length=0 -fsigned-char -fno-short-enums   CMakeFiles/hello_world.dir/hello_world/hello_world.c.obj -o hello_world -fPIC -shared -nostdlib -nostartfiles -L/tmp/ok-lvpmpdm   -lm -lgcc
make: Leaving directory '/tmp/sylixos-example'
/usr/bin/cmake -E cmake_progress_report /tmp/sylixos-example/CMakeFiles3
Built target hello_world
make: Leaving directory '/tmp/sylixos-example'
/usr/bin/cmake -E cmake_progress_start /tmp/sylixos-example/CMakeFiles 0




lyzh 发表于 2015-6-28 17:39:17

本帖最后由 lyzh 于 2015-6-28 21:02 编辑

当前脚本

lyzh 发表于 2015-6-28 17:40:26

;P原来还可以设置金钱啊?!

flags 发表于 2015-6-29 09:13:51

支持一下

tiger 发表于 2015-6-29 14:06:03

好贴
页: [1]
查看完整版本: cmake scripts for SylixOS