On 11/03/2011 08:20 PM, Dan Kegel wrote:
> Thanks for the authoritative answer.
> 
> I'm now using
> 
> SET(gtest_force_shared_crt on CACHE BOOL
>   "Use shared (DLL) run-time lib even when Google Test is built as static 
> lib.")
> add_subdirectory(gtest)
> include_directories(gtest/include)
> add_executable(mymain mymain.cpp)
> target_link_libraries(mymain gtest_main)
> 
> in my test app, and it's working with visual c++ 2008 (will try linux 
> shortly).

Yes, this should work well if the gtest_force_shared_crt variable is
to have a different default value than the one provided by the gtest
CMakeLists.txt. However, variables preset with OPTION() are usually
intended to be at the user's disposal - otherwise, they wouldn't be
options - so a project should definitely pass through without errors
regardless to which values these variable are set at first. In other
words, it shouldn't be necessary to preset gtest_force_shared_crt to
ON for the project to succeed. Of course, inter-option dependencies
must be handled properly, see the CMakeDependentOption module, e.g.

> I confess, I've been putting off understanding cmake's variable scoping
> and caching; I guess I'll have to pay more attention to it.
> I hope the library of worked examples I'm putting together at
> http://code.google.com/p/winezeug/source/browse/#svn/trunk/cmake_examples
> will eventually help other doc-o-phobes come up the curve faster.

IMO, the actual difficulty is to understand

SET(<VARIABLE> <VALUE> CACHE <TYPE> "...")

as this command can

- write to the cache and to the current scope,
- write to the current scope only,
- do nothing.

Moreover, the potential difference between -D<VARIABLE>=<VALUE> and
-D<VARIABLE>:<TYPE>=<VALUE> is a bug, IMO, since <TYPE> should only
be relevant for the GUIs, but not for the resulting configuration.
Anyway, if one conceptually distinguishes "cache" variables from
"scope" variables, everything is fine.

Regards,

Michael
--

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

Reply via email to