[CMake] OpenMP detection/support

Brad King brad.king at kitware.com
Mon Jul 31 11:34:26 EDT 2006


Crni Gorac wrote:
> Everything in my project, let's call it "foo", in pure ANSI C, except
> that I'm using flex and bison for parsing input, then I need getopt()
> function for processing program command line options and finally, I'm
> using MPI library.  Source code files are distributed between foo/lib
> directory, where "libfoo" library was generated, and foo/src
> directory, where executable "foo" was generated.  My first question is
> related exactly to these names, I wasn't able to find how to have a
> library named "libfoo" and an executable named "foo" with cmake in
> same project, so I had to rename executable to "bar"; thus my first
> question would be: is something alike somehow possible with cmake?

Targets have to have unique *logical* names but you can use the
OUTPUT_NAME property to change the *actual* name produced on disk:

ADD_LIBRARY(foo ...)
ADD_EXECUTABLE(foo-exe ...)
SET_TARGET_PROPERTIES(foo-exe PROPERTIES OUTPUT_NAME foo)

> Now, if anyone patient enough to read trough above CMakeLists.txt
> files, I would be more than interested to hear is there anything that
> could be improved.  I have also two additional questions:

Those look pretty nice to me.  I'm glad you were able to produce that
code in your first day of working with CMake.

> 1. Besides foo/lib and foo/src directories, I have foo/data and
> foo/doc directories, with some data files and program man page
> (foo/doc/bar.1) respectively.  How to structure CMakeLists.txt in
> these directories in order to specify where to install these files
> upon "make install"?

Put a CMakeLists.txt file in the doc directory and an

ADD_SUBDIRECTORY(doc)

in the top CMakeLists.txt file.  Then put this in doc/CMakeLists.txt:

INSTALL(FILES bar.1 DESTINATION man/man1)

> 2. I'm accustomed to having some rules added to program Makefiles, for
> example to have "beauty" target to call indent upon my C source code.
> How to accomplish this?

See ADD_CUSTOM_TARGET and do not specify the ALL option.

-Brad


More information about the CMake mailing list