Re: [cmake-developers] Making Config.cmake files safer

2011-11-14 Thread Brad King

On 11/12/2011 3:53 PM, David Cole wrote:

And, in my opinion, if there are multiple possible causes of the
problem then we should enumerate them in a message to the user,
just as you've done here in this email back to me. And we should try
to put them in the order of likelihood, so when they read it top-down,
they read the smallest amount possible before having the a-ha moment
where they realize what went wrong earlier.


Yes.  The wording needs to make it clear that this is *not* a problem
with CMake or the files it generated or is loading.  It is a problem
with the path between CMake generating the files and them appearing
on the user's disk.

Instead of adding the code to the bottom of GenerateImportPropertyCode
please create a separate method next to it for that part.

-Brad
--

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://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers


[cmake-developers] [CMake 0012578]: Parenthesis in source or build path causes Cmake-gui to fail the compiler tests

2011-11-14 Thread Mantis Bug Tracker

The following issue has been SUBMITTED. 
== 
http://www.cmake.org/Bug/view.php?id=12578 
== 
Reported By:Jean-Christophe Houde
Assigned To:
== 
Project:CMake
Issue ID:   12578
Category:   CMake
Reproducibility:always
Severity:   minor
Priority:   normal
Status: new
== 
Date Submitted: 2011-11-14 14:57 EST
Last Modified:  2011-11-14 14:57 EST
== 
Summary:Parenthesis in source or build path causes Cmake-gui
to fail the compiler tests
Description: 
When using the Cmake gui, specifying a source or build path with an opening
parenthesis included causes the compiler tests to fail. Using the same path
without a parenthesis works.



Steps to Reproduce: 
1. Create a project directory like the following
   /project (space)
  /src
  /build
2. Start Cmake-gui.
3. Use the absolute path of the src directory as the Where is the source
code variable.
4. Use the absolute path of the build directory as the Where to build the
binaries variable.
5. Use any basic CMakeList file.
6. Try to configure the project.

It now should fail at the 

Check for working C compiler using: Xcode
Check for working C compiler using: Xcode -- broken

step.

Additional Information: 
The error message is

CMake Error at /Applications/CMake
2.8-6.app/Contents/share/cmake-2.8/Modules/CMakeTestCCompiler.cmake:52
(MESSAGE):
  The C compiler /usr/bin/gcc is not able to compile a simple test program.

  It fails with the following output:

   Change Dir: /Users/houj2901/Documents/Recherche/Fibernavigator/trunk
(test)/build-code/CMakeFiles/CMakeTmp

  
  Run Build Command:/Applications/CMake\ 2.8-6.app/Contents/bin/cmakexbuild
  -project CMAKE_TRY_COMPILE.xcodeproj build -target cmTryCompileExec
  -configuration Debug

  === BUILD NATIVE TARGET cmTryCompileExec OF PROJECT CMAKE_TRY_COMPILE WITH
  CONFIGURATION Debug ===

  Check dependencies

  CompileC
 
CMAKE_TRY_COMPILE.build/Debug/cmTryCompileExec.build/Objects-normal/x86_64/testCCompiler.o
  testCCompiler.c normal x86_64 c com.apple.compilers.llvmgcc42

  cd /Users/houj2901/Documents/Recherche/Fibernavigator/trunk
(test)/build-code/CMakeFiles/CMakeTmp
  /Developer/usr/bin/llvm-gcc-4.2 -x c -arch x86_64 -fmessage-length=0 -pipe
-Wno-trigraphs -fpascal-strings -O0 -mdynamic-no-pic -DCMAKE_INTDIR=Debug
-isysroot /Developer/SDKs/MacOSX10.6.sdk -fasm-blocks -mmacosx-version-min=10.6
-gdwarf-2 -I/Users/houj2901/Documents/Recherche/Fibernavigator/trunk
(test)/build-code/CMakeFiles/CMakeTmp/Debug/include
-I/Users/houj2901/Documents/Recherche/Fibernavigator/trunk
(test)/build-code/CMakeFiles/CMakeTmp/CMAKE_TRY_COMPILE.build/Debug/cmTryCompileExec.build/DerivedSources/x86_64
-I/Users/houj2901/Documents/Recherche/Fibernavigator/trunk
(test)/build-code/CMakeFiles/CMakeTmp/CMAKE_TRY** BUILD FAILED **

  

  

  The following build commands failed:

PhaseScriptExecution CMake PostBuild Rules
 
CMAKE_TRY_COMPILE.build/Debug/cmTryCompileExec.build/Script-779D508F174847D09D396C67.sh


  (1 failure)
== 

Issue History 
Date ModifiedUsername   FieldChange   
== 
2011-11-14 14:57 Jean-Christophe HoudeNew Issue 
  
==

--

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://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers


Re: [cmake-developers] Making Config.cmake files safer

2011-11-14 Thread Alexander Neundorf
On Monday 14 November 2011, Brad King wrote:
 On 11/12/2011 3:53 PM, David Cole wrote:
  And, in my opinion, if there are multiple possible causes of the
  problem then we should enumerate them in a message to the user,
  just as you've done here in this email back to me. And we should try
  to put them in the order of likelihood, so when they read it top-down,
  they read the smallest amount possible before having the a-ha moment
  where they realize what went wrong earlier.
 
 Yes.  The wording needs to make it clear that this is *not* a problem
 with CMake or the files it generated or is loading.  It is a problem
 with the path between CMake generating the files and them appearing
 on the user's disk.
 
 Instead of adding the code to the bottom of GenerateImportPropertyCode
 please create a separate method next to it for that part.

Done, in an updated version of the 
CheckImportedFileExistenceInConfigDotCMakeFiles branch.

If there are no more objections, I'll merge tomorrow into next.

Alex
--

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://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers


Re: [cmake-developers] slow regex implementation in RegularExpression

2011-11-14 Thread Pau Garcia i Quiles
Bill,

I think the current incarnation of regexps in CMake should be kept for
compatibility reasons.

Adding PCRE is not difficult, just time consuming. The implementation I'd
do would be an additional abstraction layer:
- For the current BRE implementation, it would be a 1:1 call match
- For the PCRE implementation, it would keep match status, count,
next/previous iterators, etc.


On Mon, Nov 14, 2011 at 7:30 PM, Bill Hoffman bill.hoff...@kitware.comwrote:

 Sorry for the top post...  However, if the issue with ctest being slow can
 be fixed by using PCRE in CMake, that is good news.  We can just link in
 the library, and replace that small part of CMake internal code that has
 the performance problem.  This should not break backwards compatibility.
  It also gives us a way to slowly bring in PCRE into CMake.

 Alex, is there a way you can try PCRE in CMake to see if it fixes the
 problem?

 -Bill



 On 11/14/2011 1:13 PM, Pau Garcia i Quiles wrote:

 Hi,

 Check this:

 A wish a day 11: Perl Compatible Regular Expressions in CMake
 http://www.elpauer.org/?p=684

 Unfortunately the student turned out to be a total fraud: he knew
 nothing about CMake, regular expressions (much less PCRE!), git, and
 could barely manage with C/C++. After months of explaining *really*
 basic stuff (such as the difference between a static and a shared
 library), he silently gave up.

 I do have an initial implementation and extensive information on how to
 implement PCRE in CMake. It's just I don't have enough spare time to do
 that, and at work I cannot justify investing so many time in CMake for
 free (for now, we don't need advanced regular expressions)


 On Mon, Nov 14, 2011 at 6:57 PM, Alexandru Ciobanu
 a...@rogue-research.com 
 mailto:alex@rogue-research.**coma...@rogue-research.com
 wrote:

Hi,

Our team is affected by issue 0012381, that causes extremely poor
performance by CTest. Details here:

 http://public.kitware.com/Bug/**view.php?id=12381http://public.kitware.com/Bug/view.php?id=12381

I've created a small test case that demonstrates the problem. Please
find the .cpp file attached.

 From what I see, the RegularExpression class uses Henry Spencer
regex implementation, which is known to be slow for some cases.

On my machine, the attached example runs in 0.8 sec. Just to process
one string!
   $ time ./repr
   real 0m0.865s
   user 0m0.862s
   sys  0m0.002s

Grep can process 100k such strings in 0.5 sec (which includes
reading a 570MB file from disk):
   $ wc -l big.str.txt
  10 big.str.txt
   $ ls -lh big.str.txt
   -rw-r--r--  1 alex  staff   572M 14 Nov 12:30 big.str.txt
   $ time grep ([^:]+): warning[ \t]*[0-9]+[ \t]*: big.str.txt
   real 0m0.525s
   user 0m0.255s
   sys  0m0.269s

I see three ways to fix this problem:
  A) use a trusted 3rd party regex library, like re2 or pcre
  B) find another self-contained regex implementation
  C) try to use the standard POSIX regex available in regex.h on
most systems

I tried to find another self-contained regex implementation, that we
could use. I found Tiny REX, but it is as slow, in this case, as
Henry Spencer's implementation.

So what do you think is the best way to proceed about this problem?

sincerely,
Alex Ciobanu



-- 
Pau Garcia i Quiles
http://www.elpauer.org
(Due to my workload, I may need 10 days to answer)
--

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://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers

[cmake-developers] [CMake 0012579]: Improve project generator for eclipse to handle multiple top level directories

2011-11-14 Thread Mantis Bug Tracker

The following issue has been SUBMITTED. 
== 
http://public.kitware.com/Bug/view.php?id=12579 
== 
Reported By:Dan Kegel
Assigned To:
== 
Project:CMake
Issue ID:   12579
Category:   CMake
Reproducibility:always
Severity:   feature
Priority:   normal
Status: new
== 
Date Submitted: 2011-11-14 18:36 EST
Last Modified:  2011-11-14 18:36 EST
== 
Summary:Improve project generator for eclipse to handle
multiple top level directories
Description: 
See discussion at
http://www.cmake.org/pipermail/cmake/2011-November/047435.html

If CMakeLists.txt points to a distant directory, e.g.
  add_subdirectory(../foo foo)
the projects generated by the existing cdt generator have two problems:
1) even if -DECLIPSE_CDT4_GENERATE_SOURCE_PROJECT=TRUE is given, the ../foo
directory is not exposed as a project in the gui 
2) eclipse does not trigger a build when source files in directory ../foo
are changed.

The first problem can be solved by adding a dummy project in ../foo
just as is done in the primary source directory (though, please, use
a better name, like [_foo])

The second problem requires adding a link item in the main .project,
pointing to the foo directory.

I do those two things in a shell script after running cmake, but that
means I have to re-run my shell script by hand after every change
to any CMakeLists.txt, and it'd be nicer to have cmake's cdt generator
do it for me.

Steps to Reproduce: 
See example at 
http://code.google.com/p/winezeug/source/browse/trunk/cmake_examples/ex7/
== 

Issue History 
Date ModifiedUsername   FieldChange   
== 
2011-11-14 18:36 Dan Kegel  New Issue
==

--

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://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers


Re: [cmake-developers] slow regex implementation in RegularExpression

2011-11-14 Thread Bill Hoffman

On 11/14/2011 6:08 PM, Pau Garcia i Quiles wrote:

Bill,

I think the current incarnation of regexps in CMake should be kept for
compatibility reasons.


Yes, of course.


Adding PCRE is not difficult, just time consuming. The implementation
I'd do would be an additional abstraction layer:
- For the current BRE implementation, it would be a 1:1 call match
- For the PCRE implementation, it would keep match status, count,
next/previous iterators, etc.

So, for this case I would be interested to here from Alex to see if 
swapping out the regex will fix the ctest performance issue.  It is a 
nice isolated place to give PCRE a try.


-Bill
--

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://public.kitware.com/cgi-bin/mailman/listinfo/cmake-developers


Re: [CMake] Workflow of a collaborative project in Visual Studio+CMake

2011-11-14 Thread Michael Hertling
On 11/12/2011 01:39 PM, David Cole wrote:
 For reference, the bug Mike refers to is this one:
 
   http://public.kitware.com/Bug/view.php?id=11258
 
 I always use the manual technique of shutting down VS, running CMake,
 and then re-opening VS. It's really not that bad, once you get used to
 it.
 
 
 David C.

Is it possibly an alternative to use cmake --build within an already
configured build tree, provided the VS IDE is not strictly necessary?
E.g., when porting a project from *nix to Windows, I usually open the
VS shell, run CMake on the project's source tree from within a build
directory and finally cmake --build .. For last-minute changes, I
use the editor of my choice and invoke cmake --build . again.

With Makefiles on *nix, this approach works as expected, but with VS,
I noticed the following issue: The project is correctly rebuilt after
a change in a source file, but a change in a CMakeLists.txt file only
results in a regeneration of the solution and project files *without*
recompiling or relinking anything, i.e. it is solely the ZERO_CHECK
project which is rebuilt. In order to rebuild the actual targets, I
need to specify the --clean-first option to cmake --build .. It
seems as if a changed VS project file doesn't make VS recompile the
affected source files, even if this is clearly necessary, e.g. due
to changed preprocessor definitions. Is this behavior intended or
VS-immanent, or should it be taken for buggy? Perhaps, a VS expert
could shed some light on this matter; it'd be greatly appreciated.

Regards,

Michael

 On Fri, Nov 11, 2011 at 5:48 PM, Michael Jackson
 mike.jack...@bluequartz.net wrote:
 It is worse and better.

 1: CMake will generate the VS projects and solutions every time it needs to 
 run. DO NOT EDIT the generated VS projects and solutions. Add the 
 requirements to the CMake files.

 2: If you are on VS2007/VS2008 and you do a git pull and then switch to VS 
 and click build a cmake check is run FIRST. If anything is different the new 
 solution and project files are generated and then the build continues. You 
 will get a dialog asking if you want to reload all of the projects. Things 
 are pretty nice.

 3: If you are on VS2010 there is now a long standing bug that seems to have 
 no solution where you basically have to do the following:
  Close the VS solution
  git pull
  run cmake to regenerate the solution and projects
  Open the Solution and Compile.

 Yep. Sucks. Purchased VS2010 last year and have yet to use it because of 
 that bug. If we (the cmake community**) were to actually figure out how to 
 solve the problem then VS2010 would be as seamless as VS2008. Here is hoping 
 for the future.

 ** I have kept track of the bug. Kitware and others have put a lot of time 
 into trying to fix the bug. It just seams to be one of those elusive fixes 
 that there just may not be a solution to.
 --
 Mike Jackson www.bluequartz.net

 On Nov 11, 2011, at 5:30 PM, David Doria wrote:

 I typically work in KDevelop which has CMake support, so if another
 developer pushes some new files and changes to the CMakeLists.txt of
 my project, I simply 'git pull' the project and then click Build and
 it knows exactly what to do - it runs CMake and then builds the
 project.

 However, when working with Visual Studio, do I have to 'git pull',
 then go open cmake-gui from the VS2010E terminal, re-configure and
 re-generate the project, then reimport the VS2010E project, then
 build? This seems horribly awkward. And the reverse appears to have
 the same problem - if working inside VS I add a file to the VS
 project, how do I 'export' this addition back to the git repo?

 Thanks,

 David
--

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


[CMake] Problem with LINK_DIRECTORIES

2011-11-14 Thread Arunmozhi
Hi,

For a static library target, I used TARGET_LINK_LIBRARIES and LINK_DIRECTORIES 
to link with a third party library. As we can see that in cmake, this linking 
information is propagated and used only in an executable/shared library target 
which depends on the former static library. But the issue is that only the 
TARGET_LINK_LIBRARIES is propagated and not the LINK_DIRECTORIES. This fails 
the linking of the executable/shared library target because it could not find 
the third party library.


I found this problem when generating for visual studio 2005. The problem might 
be there in other platforms also.

I feel that this behavior is an issue. Or am I missing something? Please let me 
know.

Regards,
Arun
--

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

Re: [CMake] Problem with LINK_DIRECTORIES

2011-11-14 Thread Michael Wild
On 11/14/2011 11:46 AM, Arunmozhi wrote:
 Hi,
 
 For a static library target, I used TARGET_LINK_LIBRARIES and
 LINK_DIRECTORIES to link with a third party library. As we can see that
 in cmake, this linking information is propagated and used only in an
 executable/shared library target which depends on the former static
 library. But the issue is that only the TARGET_LINK_LIBRARIES is
 propagated and not the LINK_DIRECTORIES. This fails the linking of the
 executable/shared library target because it could not find the third
 party library.
 
 I found this problem when generating for visual studio 2005. The problem
 might be there in other platforms also.
 
 I feel that this behavior is an issue. Or am I missing something? Please
 let me know.
 
 Regards,
 Arun
 

Hi Arun

Consider LINK_DIRECTORIES to be obsolete and to be avoided at all cost.
Just pass the full path to the static library directly to
TARGET_LINK_LIBRARIES. This is much more robust and will avoid these
weird effects you are seeing.

HTH

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


Re: [CMake] Problem with LINK_DIRECTORIES

2011-11-14 Thread Robert Dailey
On Mon, Nov 14, 2011 at 6:42 AM, Michael Wild them...@gmail.com wrote:

 Hi Arun

 Consider LINK_DIRECTORIES to be obsolete and to be avoided at all cost.


I don't really agree with this advice. There are circumstances where
link_directories() is absolutely necessary, so advocating to completely
avoid it isn't really a one size fits all scenario.

What I've done is make sure that link_directories() is called from a parent
level directory, so that all projects inherit the directories. In cases
where you do not have a hierarchy setup like this, then call
link_directories() once with the same directories before each call to
add_executable, add_library, etc.

Also one unrelated note, but static libraries do not require any
dependencies to be linked in when it is built. You only need your third
party libraries in your shared library or executable that links against the
static library in question.

Hope this helps.
--

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

Re: [CMake] Problem with LINK_DIRECTORIES

2011-11-14 Thread Michael Wild
On 11/14/2011 03:36 PM, Robert Dailey wrote:
 On Mon, Nov 14, 2011 at 6:42 AM, Michael Wild them...@gmail.com
 mailto:them...@gmail.com wrote:
 
 Hi Arun
 
 Consider LINK_DIRECTORIES to be obsolete and to be avoided at all cost.
 
 
 I don't really agree with this advice. There are circumstances where
 link_directories() is absolutely necessary, so advocating to completely
 avoid it isn't really a one size fits all scenario.

Pray tell, what scenario would that be? I'm really curious, because I
can't think of any...

 
 What I've done is make sure that link_directories() is called from a
 parent level directory, so that all projects inherit the directories. In
 cases where you do not have a hierarchy setup like this, then call
 link_directories() once with the same directories before each call to
 add_executable, add_library, etc.
 
 Also one unrelated note, but static libraries do not require any
 dependencies to be linked in when it is built. You only need your third
 party libraries in your shared library or executable that links against
 the static library in question.

The OP is talking about such a setup

a/CMakelists.txt:

add_library(a STATIC a.c)
# a uses foo internally, but doesn't expose this fact in its interface.
# clients of a should not need to know about a's implementation details,
# which is why we declare this dependency here and let CMake handle the
# rest.
target_link_libraries(a foo)

b/CMakeLists.txt
-
add_executable(b b.c)
target_link_libraries(b a)


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


Re: [CMake] CMake single-configuration makefiles

2011-11-14 Thread Michael Hertling
On 11/13/2011 11:30 PM, Eric Noulard wrote:
 2011/11/13 Robert Dailey rcdai...@gmail.com:
 I understand that currently Makefiles generated by CMake are
 single-configuration by-design. In other words, you can't issue a debug or
 release command to make, you have to regenerate for a different
 configuration.
 
 For this purpose you can use 2 build trees that use the same source tree
 
 cd /path/to/source
 mkdir dbuild
 cd dbuild
 cmake -DCMAKE_BUILD_TYPE=Debug ..
 cd ..
 mkdir rbuild
 cd rbuild
 cmake -DCMAKE_BUILD_TYPE=Release ..
 
 now to build debug
 cd dbuild; make
 
 and to build release
 cd rbuild; make
 
 Can someone explain the reason for this design?
 
 Don't know in the past I used makefile that can deal with multiple config,
 everytime it was a re-entrant makefile scheme. May be this should be
 avoided in order to produce 'portable' makefiles?
 
 Are there any plans to  change it?
 
 Don't know.
 But may be it would be nice to have a way to create
 several build trees at one time for that and produce a unifying
 top level makefile that drive them all.

One can nearly achieve this by now; see the following example:

# CMakeLists.txt:
CMAKE_MINIMUM_REQUIRED(VERSION 2.8 FATAL_ERROR)
PROJECT(MULTICONFIG C)
SET(CMAKE_VERBOSE_MAKEFILE ON)
# --
IF(CMAKE_CONFIGURATION_TYPES)
ADD_CUSTOM_TARGET(configs)
ADD_CUSTOM_TARGET(builds)
FOREACH(i IN LISTS CMAKE_CONFIGURATION_TYPES)
FILE(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/${i})
ADD_CUSTOM_TARGET(config-${i}
COMMAND ${CMAKE_COMMAND} ${PROJECT_SOURCE_DIR}
-DCMAKE_BUILD_TYPE=${i}
-DCACHE_DIR=${PROJECT_BINARY_DIR}
WORKING_DIRECTORY ${PROJECT_BINARY_DIR}/${i})
ADD_DEPENDENCIES(configs config-${i})
ADD_CUSTOM_TARGET(build-${i}
COMMAND ${CMAKE_COMMAND} --build ${PROJECT_BINARY_DIR}/${i})
ADD_DEPENDENCIES(builds build-${i})
ENDFOREACH()
FOREACH(i IN LISTS FORWARD)
ADD_CUSTOM_TARGET(${i}
COMMAND ${CMAKE_COMMAND} --build \${CONFIG} --target ${i})
ENDFOREACH()
ADD_CUSTOM_TARGET(world ALL
COMMAND ${CMAKE_COMMAND} --build \${CONFIG})
RETURN()
ENDIF()
IF(DEFINED CACHE_DIR)
LOAD_CACHE(${CACHE_DIR}
EXCLUDE CMAKE_BUILD_TYPE CMAKE_CONFIGURATION_TYPES)
ENDIF()
# --
ADD_EXECUTABLE(main main.c)
SET_TARGET_PROPERTIES(main PROPERTIES
COMPILE_DEFINITIONS_DEBUG DEBUG
COMPILE_DEFINITIONS_RELEASE RELEASE)

/* main.c: */
int main(void){return 0;}

The part to add in order to enable multiple build trees is between
-- and --. The basic idea is: If CMAKE_CONFIGURATION_TYPES is
defined, create a build tree for each entry along with a custom target
which configures that tree with the correct CMAKE_BUILD_TYPE. Also, add
a custom target which builds that tree via cmake --build. These build
trees' configurations must be a separate step - therefore, driven by a
custom target - because the top-level configuration has to be finished
to enable the several build trees to load the cache via LOAD_CACHE();
otherwise, the initial -D settings would not be forwarded. For these
reasons, we need the CACHE_DIR variable, and the RETURN() statement
disables the actual part of the CMakeLists.txt file in the top-level
configuration. Obviously, CMAKE_BUILD_TYPE/CMAKE_CONFIGURATION_TYPES
must not be loaded from the cache to the build trees. A downside is
that you must implement your own, say, target forwarding if you
want to be able to say main TARGET CONFIG=debug; the FORWARD
variable with a list of targets to be forwarded is used for this
purpose. To see the project in action, go to an empty top-level
build directory and issue, e.g.:

cmake srcdir \
-DCMAKE_CONFIGURATION_TYPES=debug;release;custom \
-DCMAKE_C_FLAGS_CUSTOM=-DCUSTOM \
-DFORWARD=main

This will create the subdirectories {debug,release,custom}; now

make configs

to configure the different build trees and load the cache from the
top-level configuration. Subsequently, you can say make builds to
build all configurations, or cmake --build config to build only
one, or make main CONFIG=CONFIG or even make CONFIG=CONFIG.

Anyway, although the addition to mimic the behavior of a real multi-
configuration generator to the Makefiles ones is no big deal, I'm
in doubt if it's worth the effort. Personally, I'm fine with the
Makefiles generators' single-configuration limitation.

Regards,

Michael

 I'm new to Makefiles so I'm curious to learn as much as possible
 about it.
 
 If you are new to makefile may be you can have a look at
 the chapter 4 of this book
 http://www.informit.com/store/product.aspx?isbn=0130091154
 
 it is about GNU make but it contains valuable introduction to makefile
 and the book may downloaded:
 http://ptgmedia.pearsoncmg.com/images/0130091154/downloads/0130091154.zip
--

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: 

Re: [CMake] CMAKE_RUNTIME_OUTPUT_DIRECTORY best practice for Windows and Visual Studio

2011-11-14 Thread Mateusz Łoskot
On 13 November 2011 19:51, Niels Dekker - address until 2014
niels_dekker_address_until_2...@xs4all.nl wrote:
 Mateusz Loskot wrote:
 On Windows, I use Visual Studio for development, so I have
 CMake-generated .sln with projects. loaded into the IDE. I build.
 Then, I'd like to run one of executables (e.g. test.exe) which links against 
 the DLLs also
 built by the project. Obviously, it is necessary to deal with the run-time 
 search path.

 At the moment, I simplify things by outputting all .exe and .dll
 binaries to common directory, so programs can find required DLLs:

 set(MYPRJOUTDIR ${PROJECT_BINARY_DIR}/bin/${CMAKE_BUILD_TYPE})
 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${MYPRJOUTDIR})

 On Windows, it looks fine to me to have all the DLL's built by the project
 together with the executable that links against them, in one and the same
 CMAKE_RUNTIME_OUTPUT_DIRECTORY.

Good, I'm glad it's nothing weird neither wrong in this approach.

 The alternative of setting the PATH looks
 less reliable to me, because the PATH may easily be overruled by other
 locations (current directory, system directory or Windows directory),
 depending on that rather complicated Dynamic-Link Library Search Order
 thing, http://msdn.microsoft.com/en-us/site/ms682586  And eventually I guess
 you don't want your application to depend on the PATH at the end user machine.

Yes, you are right.
I have some projects configured in such way they try to generate
.vcproj.user file
which defines PATH with pointers to location of run-time dependencies.
For example: https://github.com/libLAS/libLAS/tree/master/cmake

 However, I haven't yet tried to build an isolated application
 according to your reference [3]
 (http://msdn.microsoft.com/en-us/library/aa375190%28VS.85%29.aspx).
 Would you recommend doing so?

Niels, I haven't tried it myself neither. I don't have experience with
this technique,
so I can't say if it is recommended.
Actually, I hoped to receive a related piece of advice here, from CMake users.

Best regards,
-- 
Mateusz Loskot, http://mateusz.loskot.net
Charter Member of OSGeo, http://osgeo.org
Member of ACCU, http://accu.org
--

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

Re: [CMake] Problem with LINK_DIRECTORIES

2011-11-14 Thread David Cole
On Mon, Nov 14, 2011 at 9:36 AM, Robert Dailey rcdai...@gmail.com wrote:
 On Mon, Nov 14, 2011 at 6:42 AM, Michael Wild them...@gmail.com wrote:

 Hi Arun
 Consider LINK_DIRECTORIES to be obsolete and to be avoided at all cost.

 I don't really agree with this advice. There are circumstances where
 link_directories() is absolutely necessary, so advocating to completely
 avoid it isn't really a one size fits all scenario.

I agree with the advice entirely. link_directories is completely
*un*necessary if you follow the other advice which is to always use
full path names to library files (or CMake target names) when calling
target_link_libraries.

I never use link_directories.


 What I've done is make sure that link_directories() is called from a parent
 level directory, so that all projects inherit the directories. In cases
 where you do not have a hierarchy setup like this, then call
 link_directories() once with the same directories before each call to
 add_executable, add_library, etc.
 Also one unrelated note, but static libraries do not require any
 dependencies to be linked in when it is built. You only need your third
 party libraries in your shared library or executable that links against the
 static library in question.
 Hope this helps.
 --

 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

--

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


Re: [CMake] Problem with LINK_DIRECTORIES

2011-11-14 Thread Robert Dailey
On Mon, Nov 14, 2011 at 11:00 AM, David Cole david.c...@kitware.com wrote:

 On Mon, Nov 14, 2011 at 9:36 AM, Robert Dailey rcdai...@gmail.com wrote:
  On Mon, Nov 14, 2011 at 6:42 AM, Michael Wild them...@gmail.com wrote:
 
  Hi Arun
  Consider LINK_DIRECTORIES to be obsolete and to be avoided at all cost.
 
  I don't really agree with this advice. There are circumstances where
  link_directories() is absolutely necessary, so advocating to completely
  avoid it isn't really a one size fits all scenario.

 I agree with the advice entirely. link_directories is completely
 *un*necessary if you follow the other advice which is to always use
 full path names to library files (or CMake target names) when calling
 target_link_libraries.

 I never use link_directories.


Well maybe you can tell me I'm doing this wrong then, but based on how I am
currently setting up my third party libraries, it is required.

So basically all third party libraries we use are not installed
individually, instead we have a server on our intranet that contains
precompiled versions of all libraries in a specific and consistent
hierarchy. For this reason, it doesn't make sense to use find_library(),
which would normally always give you absolute paths to your library files
and thus link_directories() would not be needed.

Instead I have a script in CMake that iterates each third party library and
adds its lib link directory to a list. When done I take this whole list of
link directories and pass it to link_directories() in my top level
CMakeLists file, this way each and every project will include all of the
third party library lib directories to have access to them.

For each target I simply create a list of my libs, like so:

set( libraries zlib libbdb47 )

I pass each one of these to target_link_libraries() and I leave it up to
the compiler to search for where to find the file in the provided link
directories.
--

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

Re: [CMake] Problem with LINK_DIRECTORIES

2011-11-14 Thread Mateusz Łoskot
On 14 November 2011 17:17, Robert Dailey rcdai...@gmail.com wrote:
 So basically all third party libraries we use are not installed
 individually, instead we have a server on our intranet that contains
 precompiled versions of all libraries in a specific and consistent
 hierarchy. For this reason, it doesn't make sense to use find_library(),
 which would normally always give you absolute paths to your library files
 and thus link_directories() would not be needed.

A typical Linux user can say the same: I have all my libraries in /usr/lib
so it does not make sense to use find_library.
No point arguing if it would make sense or not.
Simply, find_library is a unified convention used by CMake, it works regardless
user-specific filesystem structure.

Simply, it would not hurt to use find_library().
Then, you can follow the CMake convention, without a need of custom
scripts, etc.

 I pass each one of these to target_link_libraries() and I leave it up to the
 compiler to search for where to find the file in the provided link
 directories.

IMO, you don't buy anything with this customisation.
Either CMake finds library and tells compiler look, it's here
or CMake + custom script approximates library location
and lets linker to find it.

Best regards,
-- 
Mateusz Loskot, http://mateusz.loskot.net
Charter Member of OSGeo, http://osgeo.org
Member of ACCU, http://accu.org
--

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


Re: [CMake] Adding a new language

2011-11-14 Thread Stefan Monnier
 If the -c option is given, specify the name of the 
 object file produced for the next source file that appears on the 
 command line.

 So if the help says that -o is supposed to do something sensible when used
 with -c but it doesn't, I'd suggest to file a bug. Note that the order of
 arguments may be important.

Duh!  Thanks for insisting: it works!
I'd still like to know how to explain to cmake that the command produces
2 files, but at least I can get rid of my hack.


Stefan happier

--

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


[CMake] Libraries with custom build command

2011-11-14 Thread Mathias Gaunard

What is the recommended way to define libraries with custom build commands?

This trick seems to be the only way:

if(NOT EXISTS ${CMAKE_CURRENT_BINARY_DIR}/dummy.cpp)
  file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/dummy.cpp)
endif()
add_library(foo dummy.cpp)
add_custom_command(TARGET foo POST_BUILD
   COMMAND my command to replace the dummy libfoo
  )

Is it normal that kind of thing is not possible with IMPORTED libraries?
--

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


Re: [CMake] Problem with LINK_DIRECTORIES

2011-11-14 Thread Michael Hertling
On 11/14/2011 06:17 PM, Robert Dailey wrote:
 On Mon, Nov 14, 2011 at 11:00 AM, David Cole david.c...@kitware.com wrote:
 
 On Mon, Nov 14, 2011 at 9:36 AM, Robert Dailey rcdai...@gmail.com wrote:
 On Mon, Nov 14, 2011 at 6:42 AM, Michael Wild them...@gmail.com wrote:

 Hi Arun
 Consider LINK_DIRECTORIES to be obsolete and to be avoided at all cost.

 I don't really agree with this advice. There are circumstances where
 link_directories() is absolutely necessary, so advocating to completely
 avoid it isn't really a one size fits all scenario.

 I agree with the advice entirely. link_directories is completely
 *un*necessary if you follow the other advice which is to always use
 full path names to library files (or CMake target names) when calling
 target_link_libraries.

 I never use link_directories.
 
 
 Well maybe you can tell me I'm doing this wrong then, but based on how I am
 currently setting up my third party libraries, it is required.
 
 So basically all third party libraries we use are not installed
 individually, instead we have a server on our intranet that contains
 precompiled versions of all libraries in a specific and consistent
 hierarchy. For this reason, it doesn't make sense to use find_library(),
 which would normally always give you absolute paths to your library files
 and thus link_directories() would not be needed.
 
 Instead I have a script in CMake that iterates each third party library and
 adds its lib link directory to a list. When done I take this whole list of
 link directories and pass it to link_directories() in my top level
 CMakeLists file, this way each and every project will include all of the
 third party library lib directories to have access to them.

Instead of populating a list with the libraries' directories, you might
set up one variable for each library containing the latter's full path,
e.g. ZLIB_LIBRARY or BDB47_LIBRARY. Since you do this in the top-level
CMakeLists.txt, these variables propagate to subordinate CMakeLists.txt
files and, thus, will be known wherever they are needed in your project.

 For each target I simply create a list of my libs, like so:
 
 set( libraries zlib libbdb47 )

SET(libraries ${ZLIB_LIBRARY} ${BDB47_LIBRARY})

 I pass each one of these to target_link_libraries() and I leave it up to
 the compiler to search for where to find the file in the provided link
 directories.

An unrestricted use of LINK_DIRECTORIES() means asking for trouble;
especially with numerous directories, there's a growing probability
that the -L option will lure the linker into a wrong directory some
day. There're even situations which can't be resolved with -L/-l at
all: Suppose you have a directory x with liba.so and libb.so, and a
directory y with different versions of lib{a,b}.so. Suppose further
you want to link against x/liba.so and y/libb.so. How do you achieve
this with LINK_DIRECTORIES() and TARGET_LINK_LIBRARIES()? Reversely,
insisting on the use of LINK_DIRECTORIES() limits the possibilities
how to organize the libraries on your intranet server. IMO, these
are actual drawbacks. OTOH, you must know the libaries' locations
to use LINK_DIRECTORIES(), and the libraries must be known anyway,
so why not join the locations to the libraries and use full paths?

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


Re: [CMake] Problem with LINK_DIRECTORIES

2011-11-14 Thread Robert Dailey
On Mon, Nov 14, 2011 at 1:59 PM, Michael Hertling mhertl...@online.dewrote:

 On 11/14/2011 06:17 PM, Robert Dailey wrote:
  Well maybe you can tell me I'm doing this wrong then, but based on how I
 am
  currently setting up my third party libraries, it is required.
 
  So basically all third party libraries we use are not installed
  individually, instead we have a server on our intranet that contains
  precompiled versions of all libraries in a specific and consistent
  hierarchy. For this reason, it doesn't make sense to use find_library(),
  which would normally always give you absolute paths to your library files
  and thus link_directories() would not be needed.
 
  Instead I have a script in CMake that iterates each third party library
 and
  adds its lib link directory to a list. When done I take this whole list
 of
  link directories and pass it to link_directories() in my top level
  CMakeLists file, this way each and every project will include all of the
  third party library lib directories to have access to them.

 Instead of populating a list with the libraries' directories, you might
 set up one variable for each library containing the latter's full path,
 e.g. ZLIB_LIBRARY or BDB47_LIBRARY. Since you do this in the top-level
 CMakeLists.txt, these variables propagate to subordinate CMakeLists.txt
 files and, thus, will be known wherever they are needed in your project.

  For each target I simply create a list of my libs, like so:
 
  set( libraries zlib libbdb47 )

 SET(libraries ${ZLIB_LIBRARY} ${BDB47_LIBRARY})

  I pass each one of these to target_link_libraries() and I leave it up to
  the compiler to search for where to find the file in the provided link
  directories.

 An unrestricted use of LINK_DIRECTORIES() means asking for trouble;
 especially with numerous directories, there's a growing probability
 that the -L option will lure the linker into a wrong directory some
 day. There're even situations which can't be resolved with -L/-l at
 all: Suppose you have a directory x with liba.so and libb.so, and a
 directory y with different versions of lib{a,b}.so. Suppose further
 you want to link against x/liba.so and y/libb.so. How do you achieve
 this with LINK_DIRECTORIES() and TARGET_LINK_LIBRARIES()? Reversely,
 insisting on the use of LINK_DIRECTORIES() limits the possibilities
 how to organize the libraries on your intranet server. IMO, these
 are actual drawbacks. OTOH, you must know the libaries' locations
 to use LINK_DIRECTORIES(), and the libraries must be known anyway,
 so why not join the locations to the libraries and use full paths?


Problem is, if I end up using find_library(), I will have to provide hint
search directories for each and every single library, and there are about
20 of them. This to me is the same as just generating a list of directories
and including those directly, and a lot less trouble.

find_library() is great and I really wanted to use it for this, but to me
the benefits of using it diminish when we are not using third party
libraries installed in a non deterministic location. If a user installs the
third party libraries in different locations on each of their machines, and
different versions, it makes more sense to use it in that case.

Why should I let CMake search  find a library when I already know where it
is? Simply to get absolute paths to those libraries? If I want absolute
paths I can think of much better ways to do it, preferably through string
concatenation.

Another issue is that 80% of the libraries we use do not have a
pre-packaged Find module provided by CMake. This means I'd end up writing
80% of the find modules myself. This is a lot of work for no perceived
benefit.

With my points made and circumstances explained, can you still give me a
good reason to use find_library?

I understand and agree with the issues that come with using
link_directories(), however I haven't run into those issues yet and our
consistent organization of third party libraries on our intranet server are
carry over from our legacy build system that I'm replacing.
--

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

Re: [CMake] Problem with LINK_DIRECTORIES

2011-11-14 Thread Alexander Neundorf
On Monday 14 November 2011, Robert Dailey wrote:
 On Mon, Nov 14, 2011 at 1:59 PM, Michael Hertling 
mhertl...@online.dewrote:
  On 11/14/2011 06:17 PM, Robert Dailey wrote:
   Well maybe you can tell me I'm doing this wrong then, but based on how
   I
  
  am
  
   currently setting up my third party libraries, it is required.
   
   So basically all third party libraries we use are not installed
   individually, instead we have a server on our intranet that contains
   precompiled versions of all libraries in a specific and consistent
   hierarchy. For this reason, it doesn't make sense to use
   find_library(), which would normally always give you absolute paths to
   your library files and thus link_directories() would not be needed.
   
   Instead I have a script in CMake that iterates each third party library
  
  and
  
   adds its lib link directory to a list. When done I take this whole list
  
  of
  
   link directories and pass it to link_directories() in my top level
   CMakeLists file, this way each and every project will include all of
   the third party library lib directories to have access to them.
  
  Instead of populating a list with the libraries' directories, you might
  set up one variable for each library containing the latter's full path,
  e.g. ZLIB_LIBRARY or BDB47_LIBRARY. Since you do this in the top-level
  CMakeLists.txt, these variables propagate to subordinate CMakeLists.txt
  files and, thus, will be known wherever they are needed in your project.
  
   For each target I simply create a list of my libs, like so:
   
   set( libraries zlib libbdb47 )
  
  SET(libraries ${ZLIB_LIBRARY} ${BDB47_LIBRARY})
  
   I pass each one of these to target_link_libraries() and I leave it up
   to the compiler to search for where to find the file in the provided
   link directories.
  
  An unrestricted use of LINK_DIRECTORIES() means asking for trouble;
  especially with numerous directories, there's a growing probability
  that the -L option will lure the linker into a wrong directory some
  day. There're even situations which can't be resolved with -L/-l at
  all: Suppose you have a directory x with liba.so and libb.so, and a
  directory y with different versions of lib{a,b}.so. Suppose further
  you want to link against x/liba.so and y/libb.so. How do you achieve
  this with LINK_DIRECTORIES() and TARGET_LINK_LIBRARIES()? Reversely,
  insisting on the use of LINK_DIRECTORIES() limits the possibilities
  how to organize the libraries on your intranet server. IMO, these
  are actual drawbacks. OTOH, you must know the libaries' locations
  to use LINK_DIRECTORIES(), and the libraries must be known anyway,
  so why not join the locations to the libraries and use full paths?
 
 Problem is, if I end up using find_library(), I will have to provide hint
 search directories for each and every single library, and there are about
 20 of them. This to me is the same as just generating a list of directories
 and including those directly, and a lot less trouble.


You can set CMAKE_PREFIX_PATH, and cmake will automatically look in the lib/ 
and include/ subdirectories of those.

Alex
--

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


Re: [CMake] Problem with LINK_DIRECTORIES

2011-11-14 Thread David Cole
If you already know where all the libraries are, please just use the
full paths to those libraries, and do not use find_library.


On Mon, Nov 14, 2011 at 3:15 PM, Robert Dailey rcdai...@gmail.com wrote:
 On Mon, Nov 14, 2011 at 1:59 PM, Michael Hertling mhertl...@online.de
 wrote:

 On 11/14/2011 06:17 PM, Robert Dailey wrote:
  Well maybe you can tell me I'm doing this wrong then, but based on how I
  am
  currently setting up my third party libraries, it is required.
 
  So basically all third party libraries we use are not installed
  individually, instead we have a server on our intranet that contains
  precompiled versions of all libraries in a specific and consistent
  hierarchy. For this reason, it doesn't make sense to use find_library(),
  which would normally always give you absolute paths to your library
  files
  and thus link_directories() would not be needed.
 
  Instead I have a script in CMake that iterates each third party library
  and
  adds its lib link directory to a list. When done I take this whole list
  of
  link directories and pass it to link_directories() in my top level
  CMakeLists file, this way each and every project will include all of the
  third party library lib directories to have access to them.

 Instead of populating a list with the libraries' directories, you might
 set up one variable for each library containing the latter's full path,
 e.g. ZLIB_LIBRARY or BDB47_LIBRARY. Since you do this in the top-level
 CMakeLists.txt, these variables propagate to subordinate CMakeLists.txt
 files and, thus, will be known wherever they are needed in your project.

  For each target I simply create a list of my libs, like so:
 
  set( libraries zlib libbdb47 )

 SET(libraries ${ZLIB_LIBRARY} ${BDB47_LIBRARY})

  I pass each one of these to target_link_libraries() and I leave it up to
  the compiler to search for where to find the file in the provided link
  directories.

 An unrestricted use of LINK_DIRECTORIES() means asking for trouble;
 especially with numerous directories, there's a growing probability
 that the -L option will lure the linker into a wrong directory some
 day. There're even situations which can't be resolved with -L/-l at
 all: Suppose you have a directory x with liba.so and libb.so, and a
 directory y with different versions of lib{a,b}.so. Suppose further
 you want to link against x/liba.so and y/libb.so. How do you achieve
 this with LINK_DIRECTORIES() and TARGET_LINK_LIBRARIES()? Reversely,
 insisting on the use of LINK_DIRECTORIES() limits the possibilities
 how to organize the libraries on your intranet server. IMO, these
 are actual drawbacks. OTOH, you must know the libaries' locations
 to use LINK_DIRECTORIES(), and the libraries must be known anyway,
 so why not join the locations to the libraries and use full paths?

 Problem is, if I end up using find_library(), I will have to provide hint
 search directories for each and every single library, and there are about 20
 of them. This to me is the same as just generating a list of directories and
 including those directly, and a lot less trouble.
 find_library() is great and I really wanted to use it for this, but to me
 the benefits of using it diminish when we are not using third party
 libraries installed in a non deterministic location. If a user installs the
 third party libraries in different locations on each of their machines, and
 different versions, it makes more sense to use it in that case.
 Why should I let CMake search  find a library when I already know where it
 is? Simply to get absolute paths to those libraries? If I want absolute
 paths I can think of much better ways to do it, preferably through string
 concatenation.
 Another issue is that 80% of the libraries we use do not have a pre-packaged
 Find module provided by CMake. This means I'd end up writing 80% of the find
 modules myself. This is a lot of work for no perceived benefit.
 With my points made and circumstances explained, can you still give me a
 good reason to use find_library?
 I understand and agree with the issues that come with using
 link_directories(), however I haven't run into those issues yet and our
 consistent organization of third party libraries on our intranet server are
 carry over from our legacy build system that I'm replacing.
 --

 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

--

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


Re: [CMake] Adding a new language

2011-11-14 Thread Alan W. Irwin

On 2011-11-14 13:30-0500 Stefan Monnier wrote:


I'd still like to know how to explain to cmake that the command produces
2 files, but at least I can get rid of my hack.


That (assuming just a simple object file is produced by compilation)
is one of several general limitations with CMake language support. For
example, my understanding is this issue has been taken care of for
Fortran 95 (where compilation produces both object and module files)
with Fortran-95 specific changes to the C++ cmake code.  But I would far
prefer to see a generic mechanism for this to not only to deal with
the Fortran 95 module issue, but also the compilation-generated Ada
library identification (*.ali) files, and also the similar issue for
OCaml compiler generated files that you have described.

Because of this and other struggles I had trying to implement Ada
language support for CMake, I didn't even consider implementing CMake
language support for OCaml for the PLplot OCaml bindings.  Instead we
currently use (many!) custom commands and targets for that case, but
I would be happy to change to your CMake OCaml language support
if/when that works.

Here is what I suggest you do to move forward with that project. 
Present a complete summary of your OCaml compilation needs for the

CMake developers.  That is, state what commands are used to build
libraries, what commands are used to build executables, what kinds of
files are generated for each stage of each kind of build, and what
directories need to be identified at each stage of the build to gain
access to files generated in previous stages of the build process.
Furthermore, a complicating factor with OCaml is there are two kinds
of executables (and libraries?) based on whether ocamlc or ocamlopt is
used to respectively produce bytecode executable files that are
executed with the OCaml interpreter (ocamlrun) or native executable
files that are executed with the ordinary run-time loader. If there
are different generic build needs for ocamlc versus ocamlopt be sure
to include those differences in your summary.

If you are willing to make such an OCaml summary, I would be willing
to do the same thing for Ada to make our joint case to the CMake
developers of what kind of additional generic language support is
needed by CMake to deal with the complicated build needs of languages
such as OCaml and Ada (and Fortran 95) in a completely generic way.

Alan
__
Alan W. Irwin

Astronomical research affiliation with Department of Physics and Astronomy,
University of Victoria (astrowww.phys.uvic.ca).

Programming affiliations with the FreeEOS equation-of-state
implementation for stellar interiors (freeeos.sf.net); the Time
Ephemerides project (timeephem.sf.net); PLplot scientific plotting
software package (plplot.sf.net); the libLASi project
(unifont.org/lasi); the Loads of Linux Links project (loll.sf.net);
and the Linux Brochure Project (lbproject.sf.net).
__

Linux-powered Science
__
--

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


Re: [CMake] Problem with LINK_DIRECTORIES

2011-11-14 Thread Clinton Stimpson

That's what I do sometimes.  To make that easier, CMake gives some convenience 
variables for library prefixes and suffixes if you are on multiple platforms.

Clint

On Monday, November 14, 2011 01:20:29 pm David Cole wrote:
 If you already know where all the libraries are, please just use the
 full paths to those libraries, and do not use find_library.
 
 On Mon, Nov 14, 2011 at 3:15 PM, Robert Dailey rcdai...@gmail.com wrote:
  On Mon, Nov 14, 2011 at 1:59 PM, Michael Hertling mhertl...@online.de
  
  wrote:
  On 11/14/2011 06:17 PM, Robert Dailey wrote:
   Well maybe you can tell me I'm doing this wrong then, but based on how
  I
  
   am
   currently setting up my third party libraries, it is required.
   
   So basically all third party libraries we use are not installed
   individually, instead we have a server on our intranet that contains
   precompiled versions of all libraries in a specific and consistent
   hierarchy. For this reason, it doesn't make sense to use
   find_library(), which would normally always give you absolute paths
   to your library files
   and thus link_directories() would not be needed.
   
   Instead I have a script in CMake that iterates each third party
   library and
   adds its lib link directory to a list. When done I take this whole
   list of
   link directories and pass it to link_directories() in my top level
   CMakeLists file, this way each and every project will include all of
   the third party library lib directories to have access to them.
  
  Instead of populating a list with the libraries' directories, you might
  set up one variable for each library containing the latter's full path,
  e.g. ZLIB_LIBRARY or BDB47_LIBRARY. Since you do this in the top-level
  CMakeLists.txt, these variables propagate to subordinate CMakeLists.txt
  files and, thus, will be known wherever they are needed in your project.
  
   For each target I simply create a list of my libs, like so:
   
   set( libraries zlib libbdb47 )
  
  SET(libraries ${ZLIB_LIBRARY} ${BDB47_LIBRARY})
  
   I pass each one of these to target_link_libraries() and I leave it up
   to the compiler to search for where to find the file in the provided
   link directories.
  
  An unrestricted use of LINK_DIRECTORIES() means asking for trouble;
  especially with numerous directories, there's a growing probability
  that the -L option will lure the linker into a wrong directory some
  day. There're even situations which can't be resolved with -L/-l at
  all: Suppose you have a directory x with liba.so and libb.so, and a
  directory y with different versions of lib{a,b}.so. Suppose further
  you want to link against x/liba.so and y/libb.so. How do you achieve
  this with LINK_DIRECTORIES() and TARGET_LINK_LIBRARIES()? Reversely,
  insisting on the use of LINK_DIRECTORIES() limits the possibilities
  how to organize the libraries on your intranet server. IMO, these
  are actual drawbacks. OTOH, you must know the libaries' locations
  to use LINK_DIRECTORIES(), and the libraries must be known anyway,
  so why not join the locations to the libraries and use full paths?
  
  Problem is, if I end up using find_library(), I will have to provide hint
  search directories for each and every single library, and there are about
  20 of them. This to me is the same as just generating a list of
  directories and including those directly, and a lot less trouble.
  find_library() is great and I really wanted to use it for this, but to me
  the benefits of using it diminish when we are not using third party
  libraries installed in a non deterministic location. If a user installs
  the third party libraries in different locations on each of their
  machines, and different versions, it makes more sense to use it in that
  case.
  Why should I let CMake search  find a library when I already know where
  it is? Simply to get absolute paths to those libraries? If I want
  absolute paths I can think of much better ways to do
  it, preferably through string concatenation.
  Another issue is that 80% of the libraries we use do not have a
  pre-packaged Find module provided by CMake. This means I'd end up
  writing 80% of the find modules myself. This is a lot of work for no
  perceived benefit.
  With my points made and circumstances explained, can you still give me a
  good reason to use find_library?
  I understand and agree with the issues that come with using
  link_directories(), however I haven't run into those issues yet and our
  consistent organization of third party libraries on our intranet server
  are carry over from our legacy build system that I'm replacing.
  --
  
  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
 
 --
 
 Powered by 

Re: [CMake] Problem with LINK_DIRECTORIES

2011-11-14 Thread Robert Dailey
What is the difference between CMAKE_LINK_LIBRARY_SUFFIX and
CMAKE_IMPORT_LIBRARY_SUFFIX? Which should I use?

-
Robert Dailey


On Mon, Nov 14, 2011 at 2:49 PM, Clinton Stimpson clin...@elemtech.comwrote:


 That's what I do sometimes.  To make that easier, CMake gives some
 convenience
 variables for library prefixes and suffixes if you are on multiple
 platforms.

 Clint

 On Monday, November 14, 2011 01:20:29 pm David Cole wrote:
  If you already know where all the libraries are, please just use the
  full paths to those libraries, and do not use find_library.
 
  On Mon, Nov 14, 2011 at 3:15 PM, Robert Dailey rcdai...@gmail.com
 wrote:
   On Mon, Nov 14, 2011 at 1:59 PM, Michael Hertling mhertl...@online.de
 
  
   wrote:
   On 11/14/2011 06:17 PM, Robert Dailey wrote:
Well maybe you can tell me I'm doing this wrong then, but based on
 how
   I
   
am
currently setting up my third party libraries, it is required.
   
So basically all third party libraries we use are not installed
individually, instead we have a server on our intranet that contains
precompiled versions of all libraries in a specific and consistent
hierarchy. For this reason, it doesn't make sense to use
find_library(), which would normally always give you absolute paths
to your library files
and thus link_directories() would not be needed.
   
Instead I have a script in CMake that iterates each third party
library and
adds its lib link directory to a list. When done I take this whole
list of
link directories and pass it to link_directories() in my top level
CMakeLists file, this way each and every project will include all of
the third party library lib directories to have access to them.
  
   Instead of populating a list with the libraries' directories, you
 might
   set up one variable for each library containing the latter's full
 path,
   e.g. ZLIB_LIBRARY or BDB47_LIBRARY. Since you do this in the top-level
   CMakeLists.txt, these variables propagate to subordinate
 CMakeLists.txt
   files and, thus, will be known wherever they are needed in your
 project.
  
For each target I simply create a list of my libs, like so:
   
set( libraries zlib libbdb47 )
  
   SET(libraries ${ZLIB_LIBRARY} ${BDB47_LIBRARY})
  
I pass each one of these to target_link_libraries() and I leave it
 up
to the compiler to search for where to find the file in the provided
link directories.
  
   An unrestricted use of LINK_DIRECTORIES() means asking for trouble;
   especially with numerous directories, there's a growing probability
   that the -L option will lure the linker into a wrong directory some
   day. There're even situations which can't be resolved with -L/-l at
   all: Suppose you have a directory x with liba.so and libb.so, and a
   directory y with different versions of lib{a,b}.so. Suppose further
   you want to link against x/liba.so and y/libb.so. How do you achieve
   this with LINK_DIRECTORIES() and TARGET_LINK_LIBRARIES()? Reversely,
   insisting on the use of LINK_DIRECTORIES() limits the possibilities
   how to organize the libraries on your intranet server. IMO, these
   are actual drawbacks. OTOH, you must know the libaries' locations
   to use LINK_DIRECTORIES(), and the libraries must be known anyway,
   so why not join the locations to the libraries and use full paths?
  
   Problem is, if I end up using find_library(), I will have to provide
 hint
   search directories for each and every single library, and there are
 about
   20 of them. This to me is the same as just generating a list of
   directories and including those directly, and a lot less trouble.
   find_library() is great and I really wanted to use it for this, but to
 me
   the benefits of using it diminish when we are not using third party
   libraries installed in a non deterministic location. If a user installs
   the third party libraries in different locations on each of their
   machines, and different versions, it makes more sense to use it in that
   case.
   Why should I let CMake search  find a library when I already know
 where
   it is? Simply to get absolute paths to those libraries? If I want
   absolute paths I can think of much better ways to do
   it, preferably through string concatenation.
   Another issue is that 80% of the libraries we use do not have a
   pre-packaged Find module provided by CMake. This means I'd end up
   writing 80% of the find modules myself. This is a lot of work for no
   perceived benefit.
   With my points made and circumstances explained, can you still give me
 a
   good reason to use find_library?
   I understand and agree with the issues that come with using
   link_directories(), however I haven't run into those issues yet and our
   consistent organization of third party libraries on our intranet server
   are carry over from our legacy build system that I'm replacing.
   --
  
   Powered by www.kitware.com
  
   Visit 

Re: [CMake] Problem with LINK_DIRECTORIES

2011-11-14 Thread Clinton Stimpson

From the Modules/Platform/* files, it looks like the only difference between 
the 
two is when using CYGWIN or MinGW.  I'm not sure which to use.

Clint

On Monday, November 14, 2011 01:51:49 pm Robert Dailey wrote:
 What is the difference between CMAKE_LINK_LIBRARY_SUFFIX and
 CMAKE_IMPORT_LIBRARY_SUFFIX? Which should I use?
 
 -
 Robert Dailey
 
 On Mon, Nov 14, 2011 at 2:49 PM, Clinton Stimpson 
clin...@elemtech.comwrote:
  That's what I do sometimes.  To make that easier, CMake gives some
  convenience
  variables for library prefixes and suffixes if you are on multiple
  platforms.
  
  Clint
  
  On Monday, November 14, 2011 01:20:29 pm David Cole wrote:
   If you already know where all the libraries are, please just use the
   full paths to those libraries, and do not use find_library.
   
   On Mon, Nov 14, 2011 at 3:15 PM, Robert Dailey rcdai...@gmail.com
  
  wrote:
On Mon, Nov 14, 2011 at 1:59 PM, Michael Hertling
mhertl...@online.de

wrote:
On 11/14/2011 06:17 PM, Robert Dailey wrote:
 Well maybe you can tell me I'm doing this wrong then, but based on
  
  how
  
I

 am
 currently setting up my third party libraries, it is required.
 
 So basically all third party libraries we use are not installed
 individually, instead we have a server on our intranet that
 contains precompiled versions of all libraries in a specific and
 consistent hierarchy. For this reason, it doesn't make sense to
 use
 find_library(), which would normally always give you absolute
 paths to your library files
 and thus link_directories() would not be needed.
 
 Instead I have a script in CMake that iterates each third party
 library and
 adds its lib link directory to a list. When done I take this whole
 list of
 link directories and pass it to link_directories() in my top level
 CMakeLists file, this way each and every project will include all
 of the third party library lib directories to have access to
 them.

Instead of populating a list with the libraries' directories, you
  
  might
  
set up one variable for each library containing the latter's full
  
  path,
  
e.g. ZLIB_LIBRARY or BDB47_LIBRARY. Since you do this in the
top-level CMakeLists.txt, these variables propagate to subordinate
  
  CMakeLists.txt
  
files and, thus, will be known wherever they are needed in your
  
  project.
  
 For each target I simply create a list of my libs, like so:
 
 set( libraries zlib libbdb47 )

SET(libraries ${ZLIB_LIBRARY} ${BDB47_LIBRARY})

 I pass each one of these to target_link_libraries() and I leave it
  
  up
  
 to the compiler to search for where to find the file in the
 provided link directories.

An unrestricted use of LINK_DIRECTORIES() means asking for trouble;
especially with numerous directories, there's a growing probability
that the -L option will lure the linker into a wrong directory some
day. There're even situations which can't be resolved with -L/-l at
all: Suppose you have a directory x with liba.so and libb.so, and a
directory y with different versions of lib{a,b}.so. Suppose further
you want to link against x/liba.so and y/libb.so. How do you achieve
this with LINK_DIRECTORIES() and TARGET_LINK_LIBRARIES()? Reversely,
insisting on the use of LINK_DIRECTORIES() limits the possibilities
how to organize the libraries on your intranet server. IMO, these
are actual drawbacks. OTOH, you must know the libaries' locations
to use LINK_DIRECTORIES(), and the libraries must be known anyway,
so why not join the locations to the libraries and use full paths?

Problem is, if I end up using find_library(), I will have to provide
  
  hint
  
search directories for each and every single library, and there are
  
  about
  
20 of them. This to me is the same as just generating a list of
directories and including those directly, and a lot less trouble.
find_library() is great and I really wanted to use it for this, but
to
  
  me
  
the benefits of using it diminish when we are not using third party
libraries installed in a non deterministic location. If a user
installs the third party libraries in different locations on each of
their machines, and different versions, it makes more sense to use
it in that case.
Why should I let CMake search  find a library when I already know
  
  where
  
it is? Simply to get absolute paths to those libraries? If I want
absolute paths I can think of much better ways to do
it, preferably through string concatenation.
Another issue is that 80% of the libraries we use do not have a
pre-packaged Find module provided by CMake. This means I'd end up
writing 80% of the find modules myself. This is a lot of work for no
perceived benefit.
With my points made and circumstances 

Re: [CMake] Multiple source directory scenario and cdt generator

2011-11-14 Thread Dan Kegel
On Sat, Nov 12, 2011 at 11:04 AM, Alexander Neundorf
a.neundorf-w...@gmx.net wrote:
 Ok. So two things:
 * please give current cmake master a try, it has several improvements.
 * please create a ticket in the cmake bug tracker for this, improved source-
 project generator for Eclipse, or something like this.

 My goal is to have no open bugs for Eclipse when 2.8.7 wil be released.

OK, I filed http://public.kitware.com/Bug/view.php?id=12579
for this

I'll give cmake master a spin sometime this week.
--

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


[Cmake-commits] CMake branch, next, updated. v2.8.6-1867-g324f819

2011-11-14 Thread Brad King
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project CMake.

The branch, next has been updated
   via  324f819fecfda80a014da2bf82d82b662d0226d1 (commit)
   via  365b613f91da1844cb7daee9aee39559ec06c7c8 (commit)
   via  a8f6159f69dbfdacf4d48ff26f21862d83fa7fd8 (commit)
  from  9958122422b06d3056c272d908c0663202ece472 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=324f819fecfda80a014da2bf82d82b662d0226d1
commit 324f819fecfda80a014da2bf82d82b662d0226d1
Merge: 9958122 365b613
Author: Brad King brad.k...@kitware.com
AuthorDate: Mon Nov 14 07:59:25 2011 -0500
Commit: CMake Topic Stage kwro...@kitware.com
CommitDate: Mon Nov 14 07:59:25 2011 -0500

Merge topic 'import-KWIML' into next

365b613 Merge branch 'upstream-kwiml' into import-KWIML
a8f6159 KWIML: Create test output dir for Xcode


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=365b613f91da1844cb7daee9aee39559ec06c7c8
commit 365b613f91da1844cb7daee9aee39559ec06c7c8
Merge: e2a0455 a8f6159
Author: Brad King brad.k...@kitware.com
AuthorDate: Mon Nov 14 07:58:31 2011 -0500
Commit: Brad King brad.k...@kitware.com
CommitDate: Mon Nov 14 07:58:31 2011 -0500

Merge branch 'upstream-kwiml' into import-KWIML


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=a8f6159f69dbfdacf4d48ff26f21862d83fa7fd8
commit a8f6159f69dbfdacf4d48ff26f21862d83fa7fd8
Author: Brad King brad.k...@kitware.com
AuthorDate: Mon Nov 14 07:53:06 2011 -0500
Commit: Brad King brad.k...@kitware.com
CommitDate: Mon Nov 14 07:54:10 2011 -0500

KWIML: Create test output dir for Xcode

Xcode 2.x forgets to create the target output directory before linking
the individual architecture pieces of a universal binary for the target
KWIML_test.  Then it passes the directory to -L and -F options when
linking the and warns that the directory does not exist.  We work around
the problem by using a pre-build rule on the target to create the output
directory.

diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index 15816cf..febc994 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -56,3 +56,13 @@ set_property(TARGET ${KWIML}_test PROPERTY
   RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
 add_test(${KWIML}.test ${CMAKE_CURRENT_BINARY_DIR}/${KWIML}_test)
 set_property(TEST ${KWIML}.test PROPERTY LABELS ${KWIML_LABELS_TEST})
+
+# Xcode 2.x forgets to create the output directory before linking
+# the individual architectures.
+if(CMAKE_OSX_ARCHITECTURES AND XCODE
+AND NOT ${XCODE_VERSION} MATCHES ^[^12])
+  add_custom_command(
+TARGET ${KWIML}_test
+PRE_BUILD COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CFG_INTDIR}
+)
+endif()

---

Summary of changes:
 Utilities/KWIML/test/CMakeLists.txt |   10 ++
 1 files changed, 10 insertions(+), 0 deletions(-)


hooks/post-receive
-- 
CMake
___
Cmake-commits mailing list
Cmake-commits@cmake.org
http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-commits


[Cmake-commits] CMake branch, next, updated. v2.8.6-1872-g98094a2

2011-11-14 Thread Brad King
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project CMake.

The branch, next has been updated
   via  98094a28c599c9d9faa13bb38a9989be7bcabefa (commit)
   via  c92ffece804cd177c3531e58a39c3f0a6487d67d (commit)
   via  1be4b6f4638334970a3d3f19891b5997ddcf5717 (commit)
  from  479f502428937e8f30b47afa824836eac4206c8f (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=98094a28c599c9d9faa13bb38a9989be7bcabefa
commit 98094a28c599c9d9faa13bb38a9989be7bcabefa
Merge: 479f502 c92ffec
Author: Brad King brad.k...@kitware.com
AuthorDate: Mon Nov 14 10:12:44 2011 -0500
Commit: CMake Topic Stage kwro...@kitware.com
CommitDate: Mon Nov 14 10:12:44 2011 -0500

Merge topic 'vs-version-ivar' into next

c92ffec Enumerate VS11 version explicitly in local generators
1be4b6f Order VS local generator Version ivar values consistently


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=c92ffece804cd177c3531e58a39c3f0a6487d67d
commit c92ffece804cd177c3531e58a39c3f0a6487d67d
Author: Brad King brad.k...@kitware.com
AuthorDate: Mon Nov 14 09:42:51 2011 -0500
Commit: Brad King brad.k...@kitware.com
CommitDate: Mon Nov 14 09:50:47 2011 -0500

Enumerate VS11 version explicitly in local generators

Since the parent commit the local generator Version ivar may be
compared for ordering.  Convert comparisons:

  ==VS10 becomes =VS10
  !=VS10 becomes  VS10

to support an explicit enumeration value for VS11 with no change
in behavior.

diff --git a/Source/cmGlobalVisualStudio11Generator.cxx 
b/Source/cmGlobalVisualStudio11Generator.cxx
index 97308bb..be7fd55 100644
--- a/Source/cmGlobalVisualStudio11Generator.cxx
+++ b/Source/cmGlobalVisualStudio11Generator.cxx
@@ -10,6 +10,7 @@
   See the License for more information.
 */
 #include cmGlobalVisualStudio11Generator.h
+#include cmLocalVisualStudio10Generator.h
 #include cmMakefile.h
 
 //
@@ -36,6 +37,16 @@ void 
cmGlobalVisualStudio11Generator::WriteSLNHeader(std::ostream fout)
 }
 
 //
+cmLocalGenerator *cmGlobalVisualStudio11Generator::CreateLocalGenerator()
+{
+  cmLocalVisualStudio10Generator* lg =
+new cmLocalVisualStudio10Generator(cmLocalVisualStudioGenerator::VS11);
+  lg-SetPlatformName(this-GetPlatformName());
+  lg-SetGlobalGenerator(this);
+  return lg;
+}
+
+//
 void cmGlobalVisualStudio11Generator
 ::GetDocumentation(cmDocumentationEntry entry) const
 {
diff --git a/Source/cmGlobalVisualStudio11Generator.h 
b/Source/cmGlobalVisualStudio11Generator.h
index 14019a7..7e8f6aa 100644
--- a/Source/cmGlobalVisualStudio11Generator.h
+++ b/Source/cmGlobalVisualStudio11Generator.h
@@ -35,6 +35,9 @@ public:
   /** Get the documentation entry for this generator.  */
   virtual void GetDocumentation(cmDocumentationEntry entry) const;
 
+  ///! create the correct local generator
+  virtual cmLocalGenerator *CreateLocalGenerator();
+
   /** TODO: VS 11 user macro support. */
   virtual std::string GetUserMacrosDirectory() { return ; }
 protected:
diff --git a/Source/cmLocalVisualStudioGenerator.h 
b/Source/cmLocalVisualStudioGenerator.h
index 9794d59..fcf1f21 100644
--- a/Source/cmLocalVisualStudioGenerator.h
+++ b/Source/cmLocalVisualStudioGenerator.h
@@ -37,7 +37,8 @@ public:
 VS71 = 71,
 VS8 = 80,
 VS9 = 90,
-VS10 = 100
+VS10 = 100,
+VS11 = 110
   };
 
   cmLocalVisualStudioGenerator(VSVersion v);
diff --git a/Source/cmVisualStudioGeneratorOptions.cxx 
b/Source/cmVisualStudioGeneratorOptions.cxx
index a3bf0ed..41230e7 100644
--- a/Source/cmVisualStudioGeneratorOptions.cxx
+++ b/Source/cmVisualStudioGeneratorOptions.cxx
@@ -65,6 +65,7 @@ void 
cmVisualStudioGeneratorOptions::FixExceptionHandlingDefault()
   this-FlagMap[ExceptionHandling] = FALSE;
   break;
 case cmLocalVisualStudioGenerator::VS10:
+case cmLocalVisualStudioGenerator::VS11:
   // by default VS puts ExceptionHandling/ExceptionHandling empty
   // for a project, to make our projects look the same put a new line
   // and space over for the closing /ExceptionHandling as the default
@@ -211,7 +212,7 @@ cmVisualStudioGeneratorOptions
 {
 return;
 }
-  if(this-Version == cmLocalVisualStudioGenerator::VS10)
+  if(this-Version = cmLocalVisualStudioGenerator::VS10)
 {
 // if there are configuration specifc flags, then
 // use the 

[Cmake-commits] CMake branch, next, updated. v2.8.6-1874-gc10deda

2011-11-14 Thread Clinton Stimpson
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project CMake.

The branch, next has been updated
   via  c10dedab552492299476ec1b9428c36581ac62b5 (commit)
   via  b688f114c9b3c951c6d4640412d33b70974a1dc6 (commit)
  from  98094a28c599c9d9faa13bb38a9989be7bcabefa (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=c10dedab552492299476ec1b9428c36581ac62b5
commit c10dedab552492299476ec1b9428c36581ac62b5
Merge: 98094a2 b688f11
Author: Clinton Stimpson clin...@elemtech.com
AuthorDate: Mon Nov 14 12:00:20 2011 -0500
Commit: CMake Topic Stage kwro...@kitware.com
CommitDate: Mon Nov 14 12:00:20 2011 -0500

Merge topic 'qt4-deploy-module' into next

b688f11 Check QtCore without warning.


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=b688f114c9b3c951c6d4640412d33b70974a1dc6
commit b688f114c9b3c951c6d4640412d33b70974a1dc6
Author: Mike McQuaid m...@mikemcquaid.com
AuthorDate: Mon Nov 14 16:34:10 2011 +
Commit: Clinton Stimpson clin...@elemtech.com
CommitDate: Mon Nov 14 10:00:08 2011 -0700

Check QtCore without warning.

When debug and release versions of QtCore were available it printed
a warning. This has been fixed.

diff --git a/Modules/DeployQt4.cmake b/Modules/DeployQt4.cmake
index 4bf1b6c..5350301 100644
--- a/Modules/DeployQt4.cmake
+++ b/Modules/DeployQt4.cmake
@@ -250,7 +250,11 @@ function(install_qt4_executable executable)
 endif()
 
 get_filename_component(executable_absolute ${executable} ABSOLUTE)
-gp_file_type(${executable_absolute} ${QT_QTCORE_LIBRARY} 
qtcore_type)
+if(EXISTS ${QT_QTCORE_LIBRARY_RELEASE})
+gp_file_type(${executable_absolute} 
${QT_QTCORE_LIBRARY_RELEASE} qtcore_type)
+elseif(EXISTS ${QT_QTCORE_LIBRARY_DEBUG})
+gp_file_type(${executable_absolute} ${QT_QTCORE_LIBRARY_DEBUG} 
qtcore_type)
+endif()
 if(qtcore_type STREQUAL system)
 set(qt_plugins_dir )
 endif()

---

Summary of changes:
 Modules/DeployQt4.cmake |6 +-
 1 files changed, 5 insertions(+), 1 deletions(-)


hooks/post-receive
-- 
CMake
___
Cmake-commits mailing list
Cmake-commits@cmake.org
http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-commits