is this library required to be separate from the executable?
No in this specific case, but, the question still holds from a general comprenhension of CMake (I'd like to get !...) and the answer may be yes in futur cases.

I tested your proposal (need to add target_include_directories to find headers) :
# in MyLib/CmakeLists.txt
add_library( MyLib <STATIC/SHARED; default STATIC> libsource1.c libsource2.cpp )
# in MyExe/CmakeLists.txt
    add_exectubable( MyExe exesource1.c )
    target_include_directories(myExe PUBLIC ../myLib/hdr)
    target_link_libraries( MyExe MyLib )

This is working, so OK I can use that. But what if the user wants to build myLib as a .a or a .so ? It seems it not possible to change that from ccmake (I've just checked). It should be possible when using Find*.cmake, no ?

... But, precisely, when typing target_include_directory you need to know the path to headers directory (+ path to libraries directory ?): this is why I felt like "Okay, I need to write a FindMyLib.cmake to handle this". My understanding is that a (internal or external) library is a library, so, it should be managed with a FindMyLib.cmake. Am I correct ? (I try to understand the "CMake way" to do thing - I am more an autotools user, so, I just try to understand CMake)

Franck

Le 2015-11-13 18:53, J Decker a écrit :
On Fri, Nov 13, 2015 at 9:51 AM, J Decker <[email protected]> wrote:
is this library required to be separate from the executable?
If not; it's far easier...

# in MyLib/CmakeLists.txt
add_library( MyLib <STATIC/SHARED; default STATIC> libsource1.c libsource2.cpp )

# in MyExe/CmakeLists.txt
add_exectubable( MyExe exesource1.c )
target_link_libraries( MyExe MyLib )


theose can be spread ito sepatate CMakeLists... with a root
CmakeLists.txt like...

---
cmake_minimum_version(something)

add_subdirectory( mylib )
add_subdirectory( myExe)




On Fri, Nov 13, 2015 at 9:28 AM, houssen <[email protected]> wrote:
Hello,

How to write a library (myLib as .a or .so) that can be used from an
executable (myExe) ?

I read the CMake doc but, obviously, I still miss some major points !... My
understanding is that, I need :
- to write a FindMyLib.cmake for myExe to find myLib (= finding
include/library directories, and, libraries to link with)
- to use find_package from myExe to find myLib

I tried to write a mini-project (attached to this mail) to do that but it
doesn't work: find_package doesn't find FindMyLib.cmake although
CMAKE_MODULE_PATH has been updated.

Can somebody help me on making this project to work ? (not able to find FindMyLib.cmake, not sure to know the "good" way to write FindMyLib.cmake, others... - I would appreciate any remarks to explain me the "good" way to
do thing)

Thanks,

Franck

Note: I set CMAKE_MODULE_PATH in the CMakeLists.txt of myLib (doing that from myExe sounds not relevant: if you know where the package is, no need to
call find_package).
Note: my understanding is that when this will work, I would be possible to
build myLib as a .a or a .so, am I correct ?
--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at:
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake

--

Powered by www.kitware.com

Please keep messages on-topic and check the CMake FAQ at: 
http://www.cmake.org/Wiki/CMake_FAQ

Kitware offers various services to support the CMake community. For more 
information on each offering, please visit:

CMake Support: http://cmake.org/cmake/help/support.html
CMake Consulting: http://cmake.org/cmake/help/consulting.html
CMake Training Courses: http://cmake.org/cmake/help/training.html

Visit other Kitware open-source projects at 
http://www.kitware.com/opensource/opensource.html

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/cmake

Reply via email to