<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:p="urn:schemas-microsoft-com:office:powerpoint" xmlns:a="urn:schemas-microsoft-com:office:access" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema" xmlns:b="urn:schemas-microsoft-com:office:publisher" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:c="urn:schemas-microsoft-com:office:component:spreadsheet" xmlns:odc="urn:schemas-microsoft-com:office:odc" xmlns:oa="urn:schemas-microsoft-com:office:activation" xmlns:html="http://www.w3.org/TR/REC-html40" xmlns:q="http://schemas.xmlsoap.org/soap/envelope/" xmlns:rtc="http://microsoft.com/officenet/conferencing" xmlns:D="DAV:" xmlns:Repl="http://schemas.microsoft.com/repl/" xmlns:mt="http://schemas.microsoft.com/sharepoint/soap/meetings/" xmlns:x2="http://schemas.microsoft.com/office/excel/2003/xml" xmlns:ppda="http://www.passport.com/NameSpace.xsd" xmlns:ois="http://schemas.microsoft.com/sharepoint/soap/ois/" xmlns:dir="http://schemas.microsoft.com/sharepoint/soap/directory/" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:dsp="http://schemas.microsoft.com/sharepoint/dsp" xmlns:udc="http://schemas.microsoft.com/data/udc" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sub="http://schemas.microsoft.com/sharepoint/soap/2002/1/alerts/" xmlns:ec="http://www.w3.org/2001/04/xmlenc#" xmlns:sp="http://schemas.microsoft.com/sharepoint/" xmlns:sps="http://schemas.microsoft.com/sharepoint/soap/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:udcs="http://schemas.microsoft.com/data/udc/soap" xmlns:udcxf="http://schemas.microsoft.com/data/udc/xmlfile" xmlns:udcp2p="http://schemas.microsoft.com/data/udc/parttopart" xmlns:wf="http://schemas.microsoft.com/sharepoint/soap/workflow/" xmlns:dsss="http://schemas.microsoft.com/office/2006/digsig-setup" xmlns:dssi="http://schemas.microsoft.com/office/2006/digsig" xmlns:mdssi="http://schemas.openxmlformats.org/package/2006/digital-signature" xmlns:mver="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns:mrels="http://schemas.openxmlformats.org/package/2006/relationships" xmlns:spwp="http://microsoft.com/sharepoint/webpartpages" xmlns:ex12t="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:ex12m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:pptsl="http://schemas.microsoft.com/sharepoint/soap/SlideLibrary/" xmlns:spsl="http://microsoft.com/webservices/SharePointPortalServer/PublishedLinksService" xmlns:Z="urn:schemas-microsoft-com:" xmlns:st="" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 12 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:"Monotype Corsiva";
        panose-1:3 1 1 1 1 2 1 1 1 1;}
@font-face
        {font-family:"Lucida Console";
        panose-1:2 11 6 9 4 5 4 2 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0in;
        margin-right:0in;
        margin-bottom:0in;
        margin-left:.5in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:1471047710;
        mso-list-type:hybrid;
        mso-list-template-ids:992477370 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l0:level1
        {mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link=blue vlink=purple><div class=WordSection1><p class=MsoNormal>I posted this question in the VTK Users mailing list originally, but have since determined that it is more of a CMake issue than a VTK issue, and the involvement of VTK is only tangential. <o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I am trying to set up a source tree which will allow CMake to create a MSVC++ .sln file that contains the following two projects:<o:p></o:p></p><p class=MsoListParagraph style='text-indent:-.25in;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='mso-list:Ignore'>1.<span style='font:7.0pt "Times New Roman"'> </span></span><![endif]>A DLL (called “FeatureViewer”) containing a vanilla C++ class that links against several VTK kits (Graphics, Rendering, and Hybrid).<o:p></o:p></p><p class=MsoListParagraph style='text-indent:-.25in;mso-list:l0 level1 lfo1'><![if !supportLists]><span style='mso-list:Ignore'>2.<span style='font:7.0pt "Times New Roman"'> </span></span><![endif]>An EXE (called “TestDriver”) that links against the aforementioned library containing the vanilla C++ class.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I want to deliver the DLL, LIB, and class header file from (1) above (as well as the dependent VTK DLLs) to a co-worker who has his own application and wants to use the functionality I’m encapsulating, but he doesn’t want to “vtk-ify” his build process. The EXE in (2) above is simply my test driver for (1).<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>My problem is that the EXE won’t build because the generated project is spuriously looking for vtk libraries (e.g. vtkGraphics.lib et. al.) at link time that it doesn’t directly reference, and it doesn’t know where to find them. The EXE shouldn’t need to know about them because their use is strictly within the FeatureViewer library. If I go into the EXE project properties and manually delete the references to vtkGraphics.lib et. al. from the linker->input->additional-dependencies list, it works. <o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>At first, I thought I was just doing something wrong in my CMakeLists.txt files, but page 25 of the CMake User’s Guide suggests that this behavior is by design. <o:p></o:p></p><p class=MsoNormal>The example given is:<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Lucida Console"'>add_library(foo foo.cxx)<o:p></o:p></span></p><p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Lucida Console"'>target_link_libraries(foo bar)<o:p></o:p></span></p><p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Lucida Console"'><o:p> </o:p></span></p><p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Lucida Console"'>add_executable(foobar foobar.cxx)<o:p></o:p></span></p><p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Lucida Console"'>target_link_libraries(foobar foo)<o:p></o:p></span></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>The text below the example states, <b>“This will link the libraries foo and bar into the executable foobar even [sic], although only foo was explicitly linked into foobar. With shared or DLL builds this linking is not always needed, but the extra linkage is harmless.”</b><o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>It seems to me that this extra linkage is not harmless: I don’t want clients of FeatureViewer to have to know about vtkGraphics.lib et. al., but CMake is creating a spurious reference.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Can someone provide a work-around?<o:p></o:p></p><p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal>My CMakeLists.txt files look like this:<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Top Level:<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Courier New"'>CMAKE_MINIMUM_REQUIRED(VERSION 2.4)<o:p></o:p></span></p><p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Courier New"'>IF(COMMAND CMAKE_POLICY)<o:p></o:p></span></p><p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Courier New"'> CMAKE_POLICY(SET CMP0003 NEW)<o:p></o:p></span></p><p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Courier New"'>ENDIF(COMMAND CMAKE_POLICY)<o:p></o:p></span></p><p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Courier New"'><o:p> </o:p></span></p><p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Courier New"'>PROJECT(FeatureViewer)<o:p></o:p></span></p><p class=MsoNormal><span style='font-family:"Courier New"'><o:p> </o:p></span></p><p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Courier New"'>add_subdirectory(TestDriver)<o:p></o:p></span></p><p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Courier New"'>add_subdirectory(FeatureViewer)<o:p></o:p></span></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>FeatureViewer:<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Courier New"'>SET (FeatureViewer_SRCS<o:p></o:p></span></p><p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Courier New"'> FeatureViewer.cxx<o:p></o:p></span></p><p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Courier New"'>)<o:p></o:p></span></p><p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Courier New"'><o:p> </o:p></span></p><p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Courier New"'>IF(NOT VTK_BINARY_DIR)<o:p></o:p></span></p><p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Courier New"'>FIND_PACKAGE(VTK REQUIRED)<o:p></o:p></span></p><p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Courier New"'>IF(NOT VTK_USE_RENDERING)<o:p></o:p></span></p><p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Courier New"'> MESSAGE(FATAL_ERROR "Example ${PROJECT_NAME} requires VTK_USE_RENDERING.")<o:p></o:p></span></p><p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Courier New"'>ENDIF(NOT VTK_USE_RENDERING)<o:p></o:p></span></p><p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Courier New"'>INCLUDE(${VTK_USE_FILE})<o:p></o:p></span></p><p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Courier New"'>ENDIF(NOT VTK_BINARY_DIR)<o:p></o:p></span></p><p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Courier New"'><o:p> </o:p></span></p><p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Courier New"'>ADD_LIBRARY(FeatureViewer SHARED ${FeatureViewer_SRCS})<o:p></o:p></span></p><p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Courier New"'>TARGET_LINK_LIBRARIES(FeatureViewer vtkGraphics vtkRendering vtkHybrid)<o:p></o:p></span></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>TestDriver:<o:p></o:p></p><p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Courier New"'>ADD_EXECUTABLE(TestDriver TestDriver.cxx)<o:p></o:p></span></p><p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Courier New"'><o:p> </o:p></span></p><p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Courier New"'>TARGET_LINK_LIBRARIES(TestDriver FeatureViewer)<o:p></o:p></span></p><p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Courier New"'><o:p> </o:p></span></p><p class=MsoNormal style='margin-left:.5in'><span style='font-family:"Courier New"'>INCLUDE_DIRECTORIES(${FeatureViewer_SOURCE_DIR}/FeatureViewer)<o:p></o:p></span></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Thanks in advance!!<o:p></o:p></p><p class=MsoNormal><span style='font-size:24.0pt;font-family:"Monotype Corsiva"'>Chris</span><span style='font-size:12.0pt;font-family:"Times New Roman","serif"'><o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Times New Roman","serif"'>--<br>Christopher R. Volpe, Ph.D. </span><span lang=FR style='font-size:10.0pt;font-family:"Times New Roman","serif"'>Email: <a href="mailto:cvolpe@ara.com">cvolpe@ara.com</a> <o:p></o:p></span></p><p class=MsoNormal><span lang=FR style='font-size:10.0pt;font-family:"Times New Roman","serif"'>Senior Scientist, Information Exploitation Systems Main Desk: 919-582-3300<o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Times New Roman","serif"'><a href="http://www.ara.com/">Applied Research Associates, Inc</a> Direct: 919-582-3380<o:p></o:p></span></p><p class=MsoNormal><span lang=FR style='font-size:10.0pt;font-family:"Times New Roman","serif"'>8537 Six Forks Rd., Suite 6000 Fax : 919-582-3301<o:p></o:p></span></p><p class=MsoNormal><span lang=FR style='font-size:10.0pt;font-family:"Times New Roman","serif"'>Raleigh, NC 27615 Web: </span><span style='font-size:10.0pt;font-family:"Times New Roman","serif"'><a href="http://www.ara.com/offices/NC.htm" title="http://www.ara.com/offices/NC.htm">http://www.ara.com/offices/NC.htm</a></span><span lang=FR style='font-size:10.0pt;font-family:"Times New Roman","serif"'><o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto'> <span style='font-size:12.0pt'><o:p></o:p></span></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>