Dear Brad, William,
Thanks for the quick reply.
SET_TARGET_PROPERTIES did the trick.
I don't know enough of industrial UNIX programming to know why what I
did was a bad thing. I'll need a lecture :)
Orginally, we were compiling each subdir in a .a file so that we could
compile unit tests and link them only with the .a file(s) needed. At
that stage, we didn't go much farther than some test programs that used
a module or two, so we didn't need to put all things together in a big .so.
I figured that keeping this in CMake would keep things lighter. That
being said, we can also have the tests dynamically linking to the .so
I'm making those modifications. However, I'd like to avoid having to put
the whole subdirectory hierarchy before each file... that'd make things
heavy (especially since one thing I'm adding soon is gonna have things 3
levels down...). Is there a way to do that outside of the
non-reccomended AUX_SOURCE_DIRECTORY?
Regards,
--
Marc-André LAVERDIÈRE, B. Eng., M. A. Sc. (in progress)
Research Assitant - Computer Security Laboratory
CIISE, Université Concordia University, Montréal, Québec, Canada
www.ciise.concordia.ca
/"\
\ / ASCII Ribbon Campaign
X against HTML e-mail
/ \
"Perseverance must finish its work so that you may be mature and
complete, not lacking anything." -James 1:4
Brad King wrote:
Marc-André Laverdière wrote:
Hello CMakers,
I'm really a n00b...
So, I am building each subdirectory into a static library and I want to
put all those libraries into a nice big dynamic library. The big dynamic
library is the objective here.
I'm doing it as such:
ADD_LIBRARY(XYZ SHARED
${CMAKE_CURRENT_SOURCE_DIR}/stdio/libstdio.a
${CMAKE_CURRENT_SOURCE_DIR}/stdlib/libstdlib.a
${CMAKE_CURRENT_SOURCE_DIR}/string/libstring.a
${CMAKE_CURRENT_SOURCE_DIR}/time/libtime.a
${CMAKE_CURRENT_SOURCE_DIR}/wchar/libwchar.a)
Yet, I obtain the following, when I run rebuild_cache:
CMake Error: Cannot determine link language for target XYZ
What am I doing wrong? How should I proceed to build that dynamic library?
CMake needs to know what programming language is used within the target.
This determines whether the C or C++ compiler (or Fortran, etc.) is
used to link the shared library. Normally the language is computed from
the language of the source files listed in the target. Since you don't
list any source files CMake cannot deduce the language. You can set it
explicitly by setting the LINKER_LANGUAGE target property:
SET_TARGET_PROPERTIES(XYZ PROPERTIES LINKER_LANGUAGE C)
Linking static libraries into a shared library is generally a dangerous
thing to do anyway. What are you trying to accomplish? Why can't you
just list all the source files from those subdirectories in the XYZ target?
-Brad
_______________________________________________
CMake mailing list
[email protected]
http://www.cmake.org/mailman/listinfo/cmake