I don't think the style of include paths has anything to do with whether or not the library will compile as a static or dynamic library.

What is the output of:
MESSAGE("SERVER_SOURCE_DIR is ${SERVER_SOURCE_DIR}")

Please post that to the list.

_________________________________________________________
Mike Jackson                  mike.jack...@bluequartz.net
BlueQuartz Software                    www.bluequartz.net
Principal Software Engineer                  Dayton, Ohio



On Feb 4, 2009, at 5:07 AM, Nick Ogden wrote:

Thanks for your help.

It seems that the library cannot be compiled as static, when I tried it as dynamic it worked without a problem. I assume that this is due to the <> style includes as there wouldn't be a search path for a static library since it's
part of the executable.

Could anyone tell me what the requirements are for static vs dynamic
compilation?

On Wednesday 04 February 2009 01:34:56 Matthew Woehlke wrote:
Nick Ogden wrote:
Hi there,

I see you found the right list ;-).

(And I will admit I was lazy and didn't read it before on kde-devel,
which is why I'm just now answering your actual question.)

I have a problem with using CMake to compile a library that I'm trying to
use in an application that I'm writing.

I have the following directory structure:

src/

 |---- CMakeLists.txt (1)
 |---- app/
 |
 |       |---- CMakeLists.txt (2)
 |       |---- (app source and headers)
 |
 |---- libmba/
 |
 |       |---- CMakeLists.txt (3)
 |       |---- mba
 |       |
 |       |        |---- (libmba headers)
 |       |
 |       |---- (libmba source)

The problem occurs when compiling the library. Make states that it cannot
find a header file for the library, which is definitely in the 'mba'
directory. The problem seems to be that the library uses '#include
<mba/XXXX>' style statements in the header files and as such expects the search path to start in the 'libmba' directory. Since some header files include other header files, make then seems to look for the directory 'src/libmba/mba/mba' which of course does not exist. Is there any way of
preventing this behavior so that the search will always start in the
'libmba' directory?
[snip]
include_directories(${SERVER_SOURCE_DIR}/libmba)
add_library(mba STATIC ${mba_SRC})

Hmm... offhand it seems like that should work. You might try running
'make VERBOSE=1' to see what is being passed to the linker, and also
check that ${SERVER_SOURCE_DIR} is defined as you expect it to be
(either add a message(STATUS), or check CMakeCache.txt in your build
directory). My WAG would be that ${SERVER_SOURCE_DIR} is empty.

If that doesn't help, posting a reduced test case that shows the same
problem would be useful.

--
Matthew
Please do not quote my e-mail address unobfuscated in message bodies.

--
Nick Ogden

Email: n...@nickogden.net      PGP: 2598FFE4
Web:   www.nickogden.net
_______________________________________________
CMake mailing list
CMake@cmake.org
http://www.cmake.org/mailman/listinfo/cmake

_______________________________________________
CMake mailing list
CMake@cmake.org
http://www.cmake.org/mailman/listinfo/cmake

Reply via email to