project/ (root)
libraries/ (contains (precompiled) libraries
src/
code/ (contains a set of fortran files)
내 CMakeLists.txt 파일이 project/
현재 다음과 같은 구조를 가지고 프로젝트에 대한 cmake 파일을 작성하고 효과적으로 단지이 (가) 작성하는
cmake_minimum_required(VERSION 2.6)
enable_language(Fortran)
project(project1)
set(projsrc src/code)
set(libdir lib/)
find_library(PROJ_LIBRARY pr10 PATHS ${libdir})
add_executable (sc1 sc1.f90)
target_link_libraries(sc1 ${PROJ_LIBRARY})
입니다 해요 내 바이너리를 소스 코드와 같은 폴더에 넣었을 때 실제로 위의 단계 (예 : src
폴더 -이 구조가 바뀌어 결국 bin
폴더가됩니다.)에서 수행 할 수 있지만 수행 방법을 찾지 못했습니다. 그것.
몇 가지 대답은 모든 폴더에 CMakeLists.txt 파일이 있어야한다는 것입니다. 맞습니까? 환경 변수를 설정하거나 CMake 변수를 사용할 수 있습니까 (예 :). 또한 일부 답변에서는 게시 된 솔루션이 C++과 다른지 여부가 명확하지 않습니다. CMake가 가장 자주 사용되는 것으로 보입니다. 내 행동이 다른 이유
이cmake_minimum_required(VERSION 2.6)
enable_language(Fortran)
project(project1)
set(projsrc src/code)
set(libdir lib/)
find_library(PROJ_LIBRARY pr10 PATHS ${libdir})
add_executable (src/sc1 ${projsrc}/sc1.f90)
target_link_libraries(src/sc1 ${PROJ_LIBRARY})
그러나,이 을 설명하지 않습니다
편집
나는 내가 약간 수정하여 원하는 동작으로 변경할 수 있다는 것을 발견 아래의 화살표 도저에 따라 어떻게되어야하는지에 대해 또한 환경 변수의 값을 표시하는 방법을 알아 내려고 노력하고 있습니다. 나는 행운을 빌어 다음을 시도했다.
message(${RUNTIME_OUTPUT_DIRECTORY})
message($ENV{RUNTIME_OUTPUT_DIRECTORY})
message(${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
message($ENV{CMAKE_RUNTIME_OUTPUT_DIRECTORY})
"bin"dir 아이디어에주의하십시오. 좋은 이유로 현대 건축 양식이 아닙니다. "out-of-source builds"가 필요할 수도 있습니다. http://stackoverflow.com/a/12237398/587407 – Offirmo
@Offirmo - 음, 모든 과학 용 소프트웨어에는'src'와' bin 디렉토리 구조 -이 아이디어에 무슨 문제가 있습니까? 더 이상 읽어 주실 수 있습니까? – ChrisW
예를 들어, 다른 컴파일러 (동일한 작업) 또는 다른 옵션 (동일한 작업)을 사용하여 동일한 프로그램을 빌드하려는 경우 bin 디렉토리에서 어떻게 공존시킬 수 있습니까? 전체 구조를 복제해야합니다. "out-of-source"빌드를 사용하면 같은 소스를 공유하는 "bin"디렉토리를 원하는만큼 가질 수 있습니다. cmake는 그것을 옹호합니다 : http://www.cmake.org/Wiki/CMake_FAQ#Out-of-source_build_trees 그리고 예를 들어, Wt 라이브러리는 http : //www.webtoolkit과 같은 것을 만듭니다.eu/wt/doc/reference/html/InstallationUnix.html # build. – Offirmo