Version 2 (modified by 14 years ago) ( diff ) | ,
---|
Building individual libraries with cmake
help
In a configured cmake workspace, make help
will display a list of available targets. Example:
% make help The following are some of the valid targets for this Makefile: ... all (the default if no target is provided) ... clean ... depend ... edit_cache ... install ... install/local ... install/strip ... list_install_components ... package ... package_source ... rebuild_cache ... boost_date_time ... boost_date_time-mt-shared ... boost_date_time-mt-shared-debug ... boost_date_time-mt-static ... boost_date_time-mt-static-debug ... boost_date_time-shared ... boost_date_time-shared-debug ... boost_date_time-static ... boost_date_time-static-debug ... boost_filesystem ... boost_filesystem-mt-shared ... boost_filesystem-mt-shared-debug ... boost_filesystem-mt-static ... boost_filesystem-mt-static-debug ... boost_filesystem-shared ... boost_filesystem-shared-debug ... boost_filesystem-static ... boost_filesystem-static-debug [etc]
You can build any target by passing it as an argument:
% make boost_signals-static [ 0%] Building CXX object libs/signals/src/CMakeFiles/boost_signals-static.dir/trackable.cpp.o [ 0%] Building CXX object libs/signals/src/CMakeFiles/boost_signals-static.dir/connection.cpp.o [100%] Building CXX object libs/signals/src/CMakeFiles/boost_signals-static.dir/named_slot_map.cpp.o [100%] Building CXX object libs/signals/src/CMakeFiles/boost_signals-static.dir/signal_base.cpp.o [100%] Building CXX object libs/signals/src/CMakeFiles/boost_signals-static.dir/slot.cpp.o Linking CXX static library ../../../lib/libboost_signals-gcc41-1_35.a [100%] Built target boost_signals-static
Preprocessing
In build directories corresponding to a source library containing a CMakeLists.txt
containing a
boost_add_library
invocation (e.g. build/libs/signals/src, build/libs/filesystem/src),
more detailed targets are available:
% cd libs/signals/src % make help The following are some of the valid targets for this Makefile: [many omitted] ... signal_base.o ... signal_base.i ... signal_base.s ... slot.o ... slot.i ... slot.s
making slot.i
will run slot.cpp
through the preprocessor:
% make slot.i Preprocessing CXX source to CMakeFiles/boost_signals-mt-shared.dir/slot.cpp.i
If you are interested in the compiler flags, try enabling CMAKE_VERBOSE_MAKEFILES
via ccmake
, or just passing VERBOSE=1
on the command line:
% make VERBOSE=1 slot.i make[1]: Entering directory `/home/troy/Projects/boost/branches/CMake/Boost_1_35_0-build' Preprocessing CXX source to CMakeFiles/boost_signals-mt-shared.dir/slot.cpp.i cd /home/troy/Projects/boost/branches/CMake/Boost_1_35_0-build/libs/signals/src && /usr/bin/gcc-4.1 -DBOOST_ALL_NO_LIB=1 -DBOOST_SIGNALS_NO_LIB=1 -Dboost_signals_mt_shared_EXPORTS -fPIC -I/home/troy/Projects/boost/branches/CMake/Boost_1_35_0 -O3 -DNDEBUG -DBOOST_SIGNALS_DYN_LINK=1 -pthread -D_REENTRANT -E /home/troy/Projects/boost/branches/CMake/Boost_1_35_0/libs/signals/src/slot.cpp > CMakeFiles/boost_signals-mt-shared.dir/slot.cpp.i
This may come in handy while we wait for c++0x to banish preprocessor metaprogramming.