[CMake] [CMAKE]Questions on build lua source code with cmake

lzprgmr baiyanhuang at gmail.com
Tue Nov 6 19:46:45 EST 2012


Tag with cmake.

在 2012-11-5 上午10:39,"lzprgmr" <baiyanhuang at gmail.com>写道:
>
> Hi, All
>
> After going through the cmake examples, I decide trying build lua with
> cmake to get a better understanding, and got some questions.
>
> First, the lua source code are placed in one flat directory (src/) and
> will generate 3 targets: a static lib, a lua interpreter and a lua
> compiler. my cmake script looks like:
>
>         cmake_minimum_required (VERSION 2.6)
>         project (lua)  # project here actually means solution in premake
>
>         # 1. lua static library
>         if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
>         add_definitions( -D_CRT_SECURE_NO_WARNINGS )
>         endif(${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
>
>         # how to rename library name?
>         add_library (lualib STATIC lapi.c lcode.c lctype.c ldebug.c ldo.c
> ldump.c lfunc.c lgc.c llex.c lmem.c lobject.c lopcodes.c lparser.c
> lstate.c lstring.c ltable.c ltm.c lundump.c lvm.c lzio.c lauxlib.c
> lbaselib.c lbitlib.c lcorolib.c ldblib.c liolib.c lmathlib.c loslib.c
> lstrlib.c ltablib.c loadlib.c linit.c)
>
>
>         # 2. lua interpreter
>         link_directories (${LUA_BINARY_DIR})
>         add_executable (lua lua.c)
>         target_link_libraries (lua lualib)
>         if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
>         target_link_libraries( lua m )
>         endif(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
>
>         # 3. lua compiler
>         link_directories (${LUA_BINARY_DIR})
>         add_executable (luac luac.c)
>         target_link_libraries (luac lualib)
>         if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
>         target_link_libraries( luac m )
>         endif(${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
>
> But it seems a litte bit problematic to me, questions are as below:
>
> * It seems to me cmake are best work with source code with consistent
> structure of its targets. in my case, I have to define all my targets
> in one CMakeLists.txt file, the problem I can see is the property I
> set for 1st target (one example is the macro definition:
> -D_CRT_SECURE_NO_WARNINGS ) will also applies to the 2nd, which is not
> expected. is there a way to avoid this?
>
> * Here the final target name for the lua library and lua interpreter
> are liblua.a and lua (in linux), because here I can't name both
> library and executable as "lua", I would hope there is a way for me to
> rename the target, like:
>       add_library(lualib targetname=lua)
>   and then I can depends on it using the project name:
>       target_link_libraries(lua lualib)
>  Is it possible to achieve this in cmake?
>
> * I guard platform specific setting using if(${CMAKE_SYSTEM_NAME}
> STREQUAL "Linux"), which seems quite tedious to me, is there a neat
> way to do so?
>
> Thanks.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20121107/69d6497a/attachment-0001.htm>


More information about the CMake mailing list