26.10.2012 12:16, Eric Noulard пишет:
2012/10/26 Vyacheslav Karamov <ubuntul...@yandex.ru>:
Hi All!
I have project with the structure similar to this
worker
| |
| chatterbox
| | |
| | CMakeLists.txt
| |
| externals
| | |
| | sndlib
| | |
| | CMakeLists.txt
| CMakeLists.txt
|
CMakeLists.txt
$ cat worker/CMakeLists.txt
cmake_minimum_required(VERSION 2.6)
add_subdirectory(externals)
add_subdirectory(chatterbox)
If I set sndlib target as a variable
set (snd_lib "sndlib")
add_library(${snd_lib} SHARED ...)
variable ${snd_lib} is undefined at the parent scope, i.e. I can't use
${snd_lib} in chatterbox/ CMakeLists.txt
target_link_libraries(chatterbox ${snd_lib}) # ${snd_lib} is empty!
>From your description this is strange because 'chatterbox'
is a subdir of 'worker' where snd_lib has been defined so it should be
visible, I guess...
unless you define the snd_lib var AFTER you
add_subdirectory(chatterbox)
since add_subdirectory process subdir first you must define
variable you need before "add_subdirectory".
I have added "externals" before "chatterbox", so
${snd_lib} should be defined in chatterbox.
How to handle this situation in a proper way?
Define it at the scope it ought to be ?
or use
set (snd_lib "sndlib" PARENT_SCOPE)
but again I think your problems comes from the fact
your defined your var after add_subdirectory.
PARENT_SCOPE variable is visible only in a parent scope, not in a
current one. But I need it in current scope, parent scope and scope
above parent.
--
Powered by www.kitware.com
Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html
Please keep messages on-topic and check the CMake FAQ at:
http://www.cmake.org/Wiki/CMake_FAQ
Follow this link to subscribe/unsubscribe:
http://www.cmake.org/mailman/listinfo/cmake